From 5edee45ff71ad7a609b5847c876f334c6307b410 Mon Sep 17 00:00:00 2001 From: Gail Badner Date: Thu, 21 Mar 2013 12:56:38 -0700 Subject: [PATCH] HHH-8102 : Generated foreign key export identifiers can collide --- .../ForeignKeyConstraintNameTests.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/hibernate-core/src/test/java/org/hibernate/metamodel/spi/relational/ForeignKeyConstraintNameTests.java b/hibernate-core/src/test/java/org/hibernate/metamodel/spi/relational/ForeignKeyConstraintNameTests.java index 315a0a9bce..ca77b03b68 100644 --- a/hibernate-core/src/test/java/org/hibernate/metamodel/spi/relational/ForeignKeyConstraintNameTests.java +++ b/hibernate-core/src/test/java/org/hibernate/metamodel/spi/relational/ForeignKeyConstraintNameTests.java @@ -23,6 +23,11 @@ */ package org.hibernate.metamodel.spi.relational; +import junit.framework.Assert; +import org.junit.Test; + +import org.hibernate.testing.FailureExpectedWithNewMetamodel; + /** * @author Gail Badner */ @@ -35,4 +40,45 @@ protected AbstractConstraint createConstraint(TableSpecification table, String c referencedTable.getPrimaryKey().addColumn( referencedTable.locateColumn( COLUMN_NAMES[0] ) ); return table.createForeignKey( referencedTable, constraintName ); } + + @Test + @FailureExpectedWithNewMetamodel + public void testGeneratedExportedIdentifier(){ + testExportedIdentifier( null, null, "ABs", "idA", "idB", "`As`", "id", "Bs", "id" ); + } + + @Test + public void testNonGeneratedExportedIdentifier(){ + testExportedIdentifier( "name1", "name2", "ABs", "idA", "idB", "`As`", "id", "Bs", "id" ); + } + + private void testExportedIdentifier( + String fkName1, + String fkName2, + String sourceTableName, + String sourceColumnName1, + String sourceColumnName2, + String targetTableName1, + String targetColumnName1, + String targetTableName2, + String targetColumnName2){ + + TableSpecification targetTable1 = createTable( targetTableName1 ); + Column targetColumn1 = targetTable1.createColumn( targetColumnName1 ); + + TableSpecification targetTable2 = createTable( targetTableName2 ); + Column targetColumn2 = targetTable2.createColumn( targetColumnName2 ); + + TableSpecification sourceTable = createTable( sourceTableName ); + Column sourceColumn1 = sourceTable.createColumn( sourceColumnName1 ); + Column sourceColumn2 = sourceTable.createColumn( sourceColumnName2 ); + + ForeignKey fk1 = sourceTable.createForeignKey( targetTable1, fkName1 ); + fk1.addColumnMapping( sourceColumn1, targetColumn1 ); + ForeignKey fk2 = sourceTable.createForeignKey( targetTable2, fkName2 ); + fk2.addColumnMapping( sourceColumn2, targetColumn2 ); + + Assert.assertTrue( ! fk1.getExportIdentifier().equals( fk2.getExportIdentifier() ) ); + } + }