/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.cfg;
import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.testing.TestForIssue;
import org.hibernate.testing.junit4.BaseUnitTestCase;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* This test illustrates the problem when two related (in terms of joins)
* classes have the same table name in different schemas.
*
* @author Didier Villevalois
*/
@TestForIssue(jiraKey = "HHH-7134")
public class WrongCircularityDetectionTest extends BaseUnitTestCase {
@Test
public void testNoCircularityDetection() {
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().build();
try {
final Metadata metadata = new MetadataSources( ssr )
.addAnnotatedClass( Entity1.class )
.addAnnotatedClass( Entity2.class )
.buildMetadata();
org.hibernate.mapping.Table entity1Table = metadata.getEntityBinding( Entity1.class.getName() ).getTable();
org.hibernate.mapping.Table entity2Table = metadata.getEntityBinding( Entity2.class.getName() ).getTable();
assertTrue( entity1Table.getName().equals( entity2Table.getName() ) );
assertFalse( entity1Table.getSchema().equals( entity2Table.getSchema() ) );
}
finally {
StandardServiceRegistryBuilder.destroy( ssr );
}
}
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(schema = "schema1", name = "entity")
public static class Entity1 {
private String id;
@Id
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
@Entity
@Table(schema = "schema2", name = "entity")
public static class Entity2 extends Entity1 {
private String value;
@Basic
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
}