+ "' for many-to-many relationship could not be found. Note that table names are case sensitive in some databases such as MySQL.";
final Iterator<ForeignKey> iter = joinTable.getImportedKeys()
.iterator();
// First foreign key in set
final ForeignKey foreignKey1 = iter.next();
// Second and last foreign key in set
final ForeignKey foreignKey2 = iter.next();
final Table owningSideTable = foreignKey1.getForeignTable();
Validate.notNull(owningSideTable, "Owning-side %s", errMsg);
final Table inverseSideTable = foreignKey2.getForeignTable();
Validate.notNull(inverseSideTable, "Inverse-side %s", errMsg);
final Integer tableCount = owningSideTables
.containsKey(owningSideTable) ? owningSideTables
.get(owningSideTable) + 1 : 0;
owningSideTables.put(owningSideTable, tableCount);
final String fieldSuffix = owningSideTables.get(owningSideTable) > 0 ? String
.valueOf(owningSideTables.get(owningSideTable)) : "";
final boolean sameTable = owningSideTable.equals(inverseSideTable);
if (owningSideTable.equals(table)) {
final JavaSymbolName fieldName = new JavaSymbolName(
getInflectorPlural(DbreTypeUtils
.suggestFieldName(inverseSideTable))
+ (sameTable ? "1" : fieldSuffix));
final FieldMetadataBuilder fieldBuilder = getManyToManyOwningSideField(
fieldName, joinTable, inverseSideTable,
foreignKey1.getOnUpdate(), foreignKey1.getOnDelete());
uniqueOwningSideFields.put(fieldName, fieldBuilder);
}
if (inverseSideTable.equals(table)) {
final JavaSymbolName fieldName = new JavaSymbolName(
getInflectorPlural(DbreTypeUtils
.suggestFieldName(owningSideTable))
+ (sameTable ? "2" : fieldSuffix));
final JavaSymbolName mappedByFieldName = new JavaSymbolName(
getInflectorPlural(DbreTypeUtils
.suggestFieldName(inverseSideTable))
+ (sameTable ? "1" : fieldSuffix));
final FieldMetadataBuilder fieldBuilder = getManyToManyInverseSideField(
fieldName, mappedByFieldName, owningSideTable,
foreignKey2.getOnUpdate(), foreignKey2.getOnDelete());
uniqueInverseSideFields.put(fieldName, fieldBuilder);
}
}
// Add unique owning-side many-to-one fields