@Override public Identifier getReferencedTableName() { return fk.getReferencedTable().getNameIdentifier(); }
public boolean matches(ForeignKey fk) { if ( refTable.equalsIgnoreCase( fk.getReferencedTable().getName() ) ) { if ( fk.getColumnSpan() == references.size() ) { List fkRefs; if ( fk.isReferenceToPrimaryKey() ) { fkRefs = fk.getReferencedTable().getPrimaryKey().getColumns(); } else { fkRefs = fk.getReferencedColumns(); } for ( int i = 0; i < fk.getColumnSpan(); i++ ) { Column column = fk.getColumn( i ); Column ref = ( Column ) fkRefs.get( i ); if ( !hasReference( column, ref ) ) { return false; } } return true; } } return false; }
final String referencedTable = foreignKey.getReferencedTable().getName();
if ( numberOfColumns != foreignKey.getReferencedTable().getPrimaryKey().getColumnSpan() ) { throw new AssertionFailure( String.format( COLUMN_MISMATCH_MSG, numberOfColumns, foreignKey.getReferencedTable().getPrimaryKey().getColumnSpan(), foreignKey.getName(), foreignKey.getTable().getName(), foreignKey.getReferencedTable().getName() targetItr = foreignKey.getReferencedTable().getPrimaryKey().getColumnIterator(); foreignKey.getName(), foreignKey.getTable().getName(), foreignKey.getReferencedTable().getName() ); final String targetTableName = jdbcEnvironment.getQualifiedObjectNameFormatter().format( foreignKey.getReferencedTable().getQualifiedTableName(), dialect );
@Test public void testJoinTableForeignKeyToNonAuditTables() { // there should only be references to REVINFO and not to the Customer or Address tables for ( Table table : metadata().getDatabase().getDefaultNamespace().getTables() ) { if ( table.getName().equals( "CustomerAddress_AUD" ) ) { for ( org.hibernate.mapping.ForeignKey foreignKey : table.getForeignKeys().values() ) { assertEquals( "REVINFO", foreignKey.getReferencedTable().getName() ); } } } }
protected void checkDefaultJoinColumnName( Class<?> ownerEntityClass, String ownerCollectionPropertyName, String ownerForeignKeyNameExpected) { final org.hibernate.mapping.Collection ownerCollection = metadata().getCollectionBinding( ownerEntityClass.getName() + '.' + ownerCollectionPropertyName ); // The default owner join column can only be computed if it has a PK with 1 column. assertEquals ( 1, ownerCollection.getOwner().getKey().getColumnSpan() ); assertEquals( ownerForeignKeyNameExpected, ownerCollection.getKey().getColumnIterator().next().getText() ); boolean hasOwnerFK = false; for ( Iterator it=ownerCollection.getCollectionTable().getForeignKeyIterator(); it.hasNext(); ) { final ForeignKey fk = (ForeignKey) it.next(); assertSame( ownerCollection.getCollectionTable(), fk.getTable() ); if ( fk.getColumnSpan() > 1 ) { continue; } if ( fk.getColumn( 0 ).getText().equals( ownerForeignKeyNameExpected ) ) { assertSame( ownerCollection.getOwner().getTable(), fk.getReferencedTable() ); hasOwnerFK = true; } } assertTrue( hasOwnerFK ); }
assertSame( ownerCollection.getOwner().getTable(), fk.getReferencedTable() ); hasOwnerFK = true; assertSame( associatedPersistentClass.getTable(), fk.getReferencedTable() ); hasInverseFK = true;
/** return true if this foreignkey is the only reference from this table to the same foreign table */ private boolean isUniqueReference(ForeignKey foreignKey) { Iterator<?> foreignKeyIterator = foreignKey.getTable().getForeignKeyIterator(); while ( foreignKeyIterator.hasNext() ) { ForeignKey element = (ForeignKey) foreignKeyIterator.next(); if(element!=foreignKey && element.getReferencedTable().equals(foreignKey.getReferencedTable())) { return false; } } return true; }
/** return true if this foreignkey is the only reference from this table to the same foreign table */ private boolean isUniqueReference(ForeignKey foreignKey) { Iterator<?> foreignKeyIterator = foreignKey.getTable().getForeignKeyIterator(); while ( foreignKeyIterator.hasNext() ) { ForeignKey element = (ForeignKey) foreignKeyIterator.next(); if(element!=foreignKey && element.getReferencedTable().equals(foreignKey.getReferencedTable())) { return false; } } return true; }
@Override public List<MappedColumn> getTargetColumns() { if ( referencedColumns != null && !referencedColumns.isEmpty() ) { return referencedColumns; } else { return getReferencedTable().getPrimaryKey().getColumns(); } }
public void addTable(Table table, String wantedClassName) { Iterator<?> fkIter = table.getForeignKeyIterator(); while ( fkIter.hasNext() ) { ForeignKey fk = (ForeignKey) fkIter.next(); TableIdentifier identifier = TableIdentifier.create(fk.getReferencedTable()); List<ForeignKey> existing = foreignKeys.get(identifier); if(existing==null) { existing = new ArrayList<ForeignKey>(); foreignKeys.put(identifier, existing); } existing.add( fk ); } tables.add(table); if(StringHelper.isNotEmpty(wantedClassName)) { tableToClassName.put(TableIdentifier.create(table), wantedClassName); } }
public void addTable(Table table, String wantedClassName) { Iterator<?> fkIter = table.getForeignKeyIterator(); while ( fkIter.hasNext() ) { ForeignKey fk = (ForeignKey) fkIter.next(); TableIdentifier identifier = TableIdentifier.create(fk.getReferencedTable()); List<ForeignKey> existing = foreignKeys.get(identifier); if(existing==null) { existing = new ArrayList<ForeignKey>(); foreignKeys.put(identifier, existing); } existing.add( fk ); } tables.add(table); if(StringHelper.isNotEmpty(wantedClassName)) { tableToClassName.put(TableIdentifier.create(table), wantedClassName); } }
public boolean matches(ForeignKey fk) { if ( refTable.equalsIgnoreCase( fk.getReferencedTable().getName() ) ) { if ( fk.getColumnSpan() == references.size() ) { List fkRefs; if ( fk.isReferenceToPrimaryKey() ) { fkRefs = fk.getReferencedTable().getPrimaryKey().getColumns(); } else { fkRefs = fk.getReferencedColumns(); } for ( int i = 0; i < fk.getColumnSpan(); i++ ) { Column column = fk.getColumn( i ); Column ref = ( Column ) fkRefs.get( i ); if ( !hasReference( column, ref ) ) { return false; } } return true; } } return false; }
public boolean matches(ForeignKey fk) { if ( refTable.equalsIgnoreCase( fk.getReferencedTable().getName() ) ) { if ( fk.getColumnSpan() == references.size() ) { List fkRefs; if ( fk.isReferenceToPrimaryKey() ) { fkRefs = fk.getReferencedTable().getPrimaryKey().getColumns(); } else { fkRefs = fk.getReferencedColumns(); } for ( int i = 0; i < fk.getColumnSpan(); i++ ) { Column column = fk.getColumn( i ); Column ref = ( Column ) fkRefs.get( i ); if ( !hasReference( column, ref ) ) { return false; } } return true; } } return false; }
public String foreignKeyToManyToManyName(ForeignKey fromKey, TableIdentifier middleTable, ForeignKey toKey, boolean uniqueReference) { String propertyName = Introspector.decapitalize( StringHelper.unqualify( getRoot().tableToClassName(TableIdentifier.create( toKey.getReferencedTable()) )) ); propertyName = pluralize( propertyName ); if(!uniqueReference) { //TODO: maybe use the middleTable name here ? if(toKey.getColumns()!=null && toKey.getColumns().size()==1) { String columnName = ( (Column) toKey.getColumns().get(0) ).getName(); propertyName = propertyName + "For" + toUpperCamelCase(columnName); } else { // composite key or no columns at all safeguard propertyName = propertyName + "For" + toUpperCamelCase(toKey.getName()); } } return propertyName; }
public String foreignKeyToManyToManyName(ForeignKey fromKey, TableIdentifier middleTable, ForeignKey toKey, boolean uniqueReference) { String propertyName = Introspector.decapitalize( StringHelper.unqualify( getRoot().tableToClassName(TableIdentifier.create( toKey.getReferencedTable()) )) ); propertyName = pluralize( propertyName ); if(!uniqueReference) { //TODO: maybe use the middleTable name here ? if(toKey.getColumns()!=null && toKey.getColumns().size()==1) { String columnName = ( (Column) toKey.getColumns().get(0) ).getName(); propertyName = propertyName + "For" + toUpperCamelCase(columnName); } else { // composite key or no columns at all safeguard propertyName = propertyName + "For" + toUpperCamelCase(toKey.getName()); } } return propertyName; }
@SuppressWarnings("unchecked") private void bindIncomingForeignKeys(PersistentClass rc, Set<Column> processed, List<ForeignKey> foreignKeys, Mapping mapping) { if(foreignKeys!=null) { for (Iterator<ForeignKey> iter = foreignKeys.iterator(); iter.hasNext();) { ForeignKey foreignKey = iter.next(); if(revengStrategy.excludeForeignKeyAsCollection( foreignKey.getName(), TableIdentifier.create(foreignKey.getTable() ), foreignKey.getColumns(), TableIdentifier.create(foreignKey.getReferencedTable() ), foreignKey.getReferencedColumns())) { log.debug("Rev.eng excluded one-to-many or one-to-one for foreignkey " + foreignKey.getName()); } else if (revengStrategy.isOneToOne(foreignKey)){ Property property = bindOneToOne(rc, foreignKey.getTable(), foreignKey, processed, false, true); rc.addProperty(property); } else { Property property = bindOneToMany(rc, foreignKey, processed, mapping); rc.addProperty(property); } } } }
@SuppressWarnings("unchecked") private void bindIncomingForeignKeys(PersistentClass rc, Set<Column> processed, List<ForeignKey> foreignKeys, Mapping mapping) { if(foreignKeys!=null) { for (Iterator<ForeignKey> iter = foreignKeys.iterator(); iter.hasNext();) { ForeignKey foreignKey = iter.next(); if(revengStrategy.excludeForeignKeyAsCollection( foreignKey.getName(), TableIdentifier.create(foreignKey.getTable() ), foreignKey.getColumns(), TableIdentifier.create(foreignKey.getReferencedTable() ), foreignKey.getReferencedColumns())) { log.debug("Rev.eng excluded one-to-many or one-to-one for foreignkey " + foreignKey.getName()); } else if (revengStrategy.isOneToOne(foreignKey)){ Property property = bindOneToOne(rc, foreignKey.getTable(), foreignKey, processed, false, true); rc.addProperty(property); } else { Property property = bindOneToMany(rc, foreignKey, processed, mapping); rc.addProperty(property); } } } }
@Test public void testSimpleUserDefinedForeignKeys() { Table table = HibernateUtil.getTable(metadata, JdbcUtil.toIdentifier(this, "ORDERS") ); Iterator<?> foreignKeyIterator = table.getForeignKeyIterator(); ForeignKey fk = (ForeignKey) foreignKeyIterator.next(); Assert.assertEquals(fk.getReferencedTable().getName(), JdbcUtil.toIdentifier(this, "CUSTOMER") ); PersistentClass classMapping = metadata.getEntityBinding("Orders"); classMapping.getProperty("customer"); classMapping = metadata.getEntityBinding("Customer"); classMapping.getProperty("orderses"); }
@Test public void testCompositeUserDefinedForeignKeys() { Table table = HibernateUtil.getTable(metadata, JdbcUtil.toIdentifier(this, "CHILDREN") ); Iterator<?> foreignKeyIterator = table.getForeignKeyIterator(); ForeignKey fk = (ForeignKey) foreignKeyIterator.next(); Assert.assertEquals(fk.getReferencedTable().getName(), JdbcUtil.toIdentifier(this, "PARENT") ); Assert.assertEquals(2, fk.getReferencedColumns().size()); Assert.assertEquals("child_to_parent", fk.getName()); PersistentClass classMapping = metadata.getEntityBinding("Children"); Property property = classMapping.getProperty("propertyParent"); Assert.assertEquals(2,property.getColumnSpan()); classMapping = metadata.getEntityBinding("Parent"); property = classMapping.getProperty("propertyChildren"); }