private String getSqlDropStrings(String tableName, ForeignKey foreignKey, Dialect dialect) { final StringBuilder buf = new StringBuilder( dialect.getAlterTableString( tableName ) ); buf.append( dialect.getDropForeignKeyString() ); if ( dialect.supportsIfExistsBeforeConstraintName() ) { buf.append( "if exists " ); } buf.append( dialect.quote( foreignKey.getName() ) ); if ( dialect.supportsIfExistsAfterConstraintName() ) { buf.append( " if exists" ); } return buf.toString(); }
public String sqlDropString(Dialect dialect, String defaultCatalog, String defaultSchema) { String tableName = getTable().getQualifiedName( dialect, defaultCatalog, defaultSchema ); final StringBuilder buf = new StringBuilder( dialect.getAlterTableString( tableName ) ); buf.append( dialect.getDropForeignKeyString() ); if ( dialect.supportsIfExistsBeforeConstraintName() ) { buf.append( "if exists " ); } buf.append( dialect.quote( getName() ) ); if ( dialect.supportsIfExistsAfterConstraintName() ) { buf.append( " if exists" ); } return buf.toString(); }
@Override public String getExportIdentifier() { // NOt sure name is always set. Might need some implicit naming return StringHelper.qualify( getTable().getExportIdentifier(), "FK-" + getName() ); }
public String toString() { if ( !isReferenceToPrimaryKey() ) { return getClass().getName() + '(' + getTable().getName() + getColumns() + " ref-columns:" + '(' + getReferencedColumns() + ") as " + getName() + ")"; } else { return super.toString(); } }
private void alignColumns(Table referencedTable) { final int referencedPkColumnSpan = referencedTable.getPrimaryKey().getColumnSpan(); if ( referencedPkColumnSpan != getColumnSpan() ) { StringBuilder sb = new StringBuilder(); sb.append( "Foreign key (" ).append( getName() ).append( ":" ) .append( getTable().getName() ) .append( " [" ); appendColumns( sb, getColumnIterator() ); sb.append( "])" ) .append( ") must have same number of columns as the referenced primary key (" ) .append( referencedTable.getName() ) .append( " [" ); appendColumns( sb, referencedTable.getPrimaryKey().getColumnIterator() ); sb.append( "])" ); throw new MappingException( sb.toString() ); } Iterator fkCols = getColumnIterator(); Iterator pkCols = referencedTable.getPrimaryKey().getColumnIterator(); while ( pkCols.hasNext() ) { ( (Column) fkCols.next() ).setLength( ( (Column) pkCols.next() ).getLength() ); } }
private void assertNoForeignKey(String foreignKeyName, String... columns) { Set<String> columnSet = new LinkedHashSet<>( Arrays.asList( columns ) ); for ( Namespace namespace : metadata().getDatabase().getNamespaces() ) { for ( org.hibernate.mapping.Table table : namespace.getTables() ) { Iterator<org.hibernate.mapping.ForeignKey> fkItr = table.getForeignKeyIterator(); while ( fkItr.hasNext() ) { org.hibernate.mapping.ForeignKey fk = fkItr.next(); assertFalse( "ForeignKey [" + foreignKeyName + "] defined and shouldn't have been.", foreignKeyName.equals( fk.getName() ) ); } } } }
private void assertForeignKey(String foreignKeyName, String... columns) { Set<String> columnSet = new LinkedHashSet<>( Arrays.asList( columns ) ); for ( Namespace namespace : metadata().getDatabase().getNamespaces() ) { for ( org.hibernate.mapping.Table table : namespace.getTables() ) { Iterator<org.hibernate.mapping.ForeignKey> fkItr = table.getForeignKeyIterator(); while ( fkItr.hasNext() ) { org.hibernate.mapping.ForeignKey fk = fkItr.next(); if ( foreignKeyName.equals( fk.getName() ) ) { assertEquals( "ForeignKey column count not like expected", columnSet.size(), fk.getColumnSpan() ); List<String> columnNames = fk.getColumns().stream().map(Column::getName).collect(Collectors.toList()); assertTrue( "ForeignKey columns [" + columnNames + "] do not match expected columns [" + columnSet + "]", columnSet.containsAll( columnNames ) ); return; } } } } fail( "ForeignKey '" + foreignKeyName + "' could not be found!" ); }
numberOfColumns, foreignKey.getReferencedTable().getPrimaryKey().getColumnSpan(), foreignKey.getName(), foreignKey.getTable().getName(), foreignKey.getReferencedTable().getName() numberOfColumns, foreignKey.getReferencedColumns().size(), foreignKey.getName(), foreignKey.getTable().getName(), foreignKey.getReferencedTable().getName() foreignKey.getKeyDefinition() != null ? dialect.getAddForeignKeyConstraintString( foreignKey.getName(), foreignKey.getKeyDefinition() ) : dialect.getAddForeignKeyConstraintString( foreignKey.getName(), columnNames, targetTableName,
@Test public void testForeignKeyNameSetForMapsIdJoinColumn() { for ( Namespace namespace : metadata().getDatabase().getNamespaces() ) { for ( Table table : namespace.getTables() ) { if ( table.getName().equals( "Post" ) ) { Iterator<org.hibernate.mapping.ForeignKey> foreignKeyIterator = table.getForeignKeyIterator(); while ( foreignKeyIterator.hasNext() ) { org.hibernate.mapping.ForeignKey foreignKey = foreignKeyIterator.next(); if ( foreignKey.getColumn( 0 ).getName().equals( "PD_ID" ) ) { assertEquals( "FK_PD", foreignKey.getName() ); return; } } } } } fail( "Expected to find a Foreign Key mapped to column PD_ID but failed to locate it" ); } }
@Test public void testWithCustomNamingStrategy() throws Exception { Metadata metadata = new MetadataSources( serviceRegistry ) .addAnnotatedClass(Address.class) .addAnnotatedClass(Person.class) .getMetadataBuilder() .applyImplicitNamingStrategy( new LongIdentifierNamingStrategy() ) .build(); UniqueKey uniqueKey = metadata.getEntityBinding( Address.class.getName()).getTable().getUniqueKeyIterator().next(); assertEquals( expectedUniqueKeyName(), uniqueKey.getName() ); org.hibernate.mapping.ForeignKey foreignKey = (org.hibernate.mapping.ForeignKey) metadata.getEntityBinding( Address.class.getName()).getTable().getForeignKeyIterator().next(); assertEquals( expectedForeignKeyName(), foreignKey.getName() ); org.hibernate.mapping.Index index = metadata.getEntityBinding( Address.class.getName()).getTable().getIndexIterator().next(); assertEquals( expectedIndexName(), index.getName() ); }
public AssociationInfo foreignKeyToInverseAssociationInfo(ForeignKey foreignKey) { AssociationInfo fkei = foreignKeyToInverseEntityInfo.get(foreignKey.getName()); if(fkei!=null) { return fkei; } else { return super.foreignKeyToInverseAssociationInfo(foreignKey); } }
public String toString() { if(!isReferenceToPrimaryKey() ) { StringBuffer result = new StringBuffer(getClass().getName() + '(' + getTable().getName() + getColumns() ); result.append( " ref-columns:" + '(' + getReferencedColumns() ); result.append( ") as " + getName() ); return result.toString(); } else { return super.toString(); } } }
public String toString() { if(!isReferenceToPrimaryKey() ) { StringBuffer result = new StringBuffer(getClass().getName() + '(' + getTable().getName() + getColumns() ); result.append( " ref-columns:" + '(' + getReferencedColumns() ); result.append( ") as " + getName() ); return result.toString(); } else { return super.toString(); } } }
public void createForeignKeys() { includedTable.createForeignKeys(); Iterator iter = includedTable.getForeignKeyIterator(); while ( iter.hasNext() ) { ForeignKey fk = (ForeignKey) iter.next(); createForeignKey( fk.getName() + Integer.toHexString( getName().hashCode() ), fk.getColumns(), fk.getReferencedEntityName() ); } }
public String sqlDropString(Dialect dialect, String defaultCatalog, String defaultSchema) { return "alter table " + getTable().getQualifiedName(dialect, defaultCatalog, defaultSchema) + dialect.getDropForeignKeyString() + getName(); }
public String sqlDropString(Dialect dialect, String defaultCatalog, String defaultSchema) { return "alter table " + getTable().getQualifiedName(dialect, defaultCatalog, defaultSchema) + dialect.getDropForeignKeyString() + getName(); }
public String sqlDropString(Dialect dialect, String defaultCatalog, String defaultSchema) { return "alter table " + getTable().getQualifiedName(dialect, defaultCatalog, defaultSchema) + dialect.getDropForeignKeyString() + getName(); }