HHH-12375 - Add more tests
This commit is contained in:
parent
5d9675c75e
commit
47d3c13aa6
|
@ -23,15 +23,22 @@
|
||||||
*/
|
*/
|
||||||
package org.hibernate.test.inheritance.discriminator;
|
package org.hibernate.test.inheritance.discriminator;
|
||||||
|
|
||||||
|
import org.hibernate.Hibernate;
|
||||||
import org.hibernate.Session;
|
import org.hibernate.Session;
|
||||||
import org.hibernate.testing.TestForIssue;
|
import org.hibernate.testing.TestForIssue;
|
||||||
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static org.hamcrest.CoreMatchers.instanceOf;
|
||||||
|
import static org.hamcrest.CoreMatchers.notNullValue;
|
||||||
|
import static org.hibernate.testing.transaction.TransactionUtil.doInHibernate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test cases for joined inheritance with eager fetching.
|
* Test cases for joined inheritance with eager fetching.
|
||||||
*
|
*
|
||||||
|
@ -50,28 +57,100 @@ public class JoinedInheritanceEagerTest extends BaseCoreFunctionalTestCase {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
doInHibernate( this::sessionFactory, session -> {
|
||||||
|
EntityC entityC = new EntityC( 1L );
|
||||||
|
EntityD entityD = new EntityD( 2L );
|
||||||
|
|
||||||
|
EntityB entityB = new EntityB( 3L );
|
||||||
|
entityB.setRelation( entityD );
|
||||||
|
|
||||||
|
EntityA entityA = new EntityA( 4L );
|
||||||
|
entityA.setRelation( entityC );
|
||||||
|
|
||||||
|
session.persist( entityC );
|
||||||
|
session.persist( entityD );
|
||||||
|
session.persist( entityA );
|
||||||
|
session.persist( entityB );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean isCleanupTestDataRequired() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestForIssue( jiraKey = "HHH-12375" )
|
@TestForIssue(jiraKey = "HHH-12375")
|
||||||
|
public void joinFindEntity() {
|
||||||
|
doInHibernate( this::sessionFactory, session -> {
|
||||||
|
EntityA entityA = session.get( EntityA.class, 4L );
|
||||||
|
Assert.assertTrue( Hibernate.isInitialized( entityA.getRelation() ) );
|
||||||
|
Assert.assertFalse( Hibernate.isInitialized( entityA.getAttributes() ) );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestForIssue(jiraKey = "HHH-12375")
|
||||||
|
public void joinFindParenEntity() {
|
||||||
|
doInHibernate( this::sessionFactory, session -> {
|
||||||
|
BaseEntity baseEntity = session.get( BaseEntity.class, 4L );
|
||||||
|
Assert.assertThat( baseEntity, notNullValue() );
|
||||||
|
Assert.assertThat( baseEntity, instanceOf( EntityA.class ) );
|
||||||
|
Assert.assertTrue( Hibernate.isInitialized( ( (EntityA) baseEntity ).getRelation() ) );
|
||||||
|
Assert.assertFalse( Hibernate.isInitialized( ( (EntityA) baseEntity ).getAttributes() ) );
|
||||||
|
} );
|
||||||
|
|
||||||
|
doInHibernate( this::sessionFactory, session -> {
|
||||||
|
BaseEntity baseEntity = session.get( BaseEntity.class, 3L );
|
||||||
|
Assert.assertThat( baseEntity, notNullValue() );
|
||||||
|
Assert.assertThat( baseEntity, instanceOf( EntityB.class ) );
|
||||||
|
Assert.assertTrue( Hibernate.isInitialized( ( (EntityB) baseEntity ).getRelation() ) );
|
||||||
|
Assert.assertFalse( Hibernate.isInitialized( ( (EntityB) baseEntity ).getAttributes() ) );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestForIssue(jiraKey = "HHH-12375")
|
||||||
public void joinUnrelatedCollectionOnBaseType() {
|
public void joinUnrelatedCollectionOnBaseType() {
|
||||||
final Session s = openSession();
|
final Session s = openSession();
|
||||||
s.getTransaction().begin();
|
s.getTransaction().begin();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
s.createQuery("from BaseEntity b join b.attributes").list();
|
s.createQuery( "from BaseEntity b join b.attributes" ).list();
|
||||||
Assert.fail("Expected a resolution exception for property 'attributes'!");
|
Assert.fail( "Expected a resolution exception for property 'attributes'!" );
|
||||||
} catch (IllegalArgumentException ex) {
|
}
|
||||||
Assert.assertTrue(ex.getMessage().contains("could not resolve property: attributes "));
|
catch (IllegalArgumentException ex) {
|
||||||
} finally {
|
Assert.assertTrue( ex.getMessage().contains( "could not resolve property: attributes " ) );
|
||||||
|
}
|
||||||
|
finally {
|
||||||
s.getTransaction().commit();
|
s.getTransaction().commit();
|
||||||
s.close();
|
s.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestForIssue(jiraKey = "HHH-12375")
|
||||||
|
public void selectBaseType() {
|
||||||
|
doInHibernate( this::sessionFactory, session -> {
|
||||||
|
List result = session.createQuery( "from BaseEntity" ).list();
|
||||||
|
Assert.assertEquals(result.size(), 2);
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
@Entity(name = "BaseEntity")
|
@Entity(name = "BaseEntity")
|
||||||
@Inheritance(strategy = InheritanceType.JOINED)
|
@Inheritance(strategy = InheritanceType.JOINED)
|
||||||
public static class BaseEntity {
|
public static class BaseEntity {
|
||||||
@Id
|
@Id
|
||||||
private long id;
|
private Long id;
|
||||||
|
|
||||||
|
public BaseEntity() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public BaseEntity(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Entity(name = "EntityA")
|
@Entity(name = "EntityA")
|
||||||
|
@ -80,6 +159,25 @@ public class JoinedInheritanceEagerTest extends BaseCoreFunctionalTestCase {
|
||||||
private Set<EntityC> attributes;
|
private Set<EntityC> attributes;
|
||||||
@ManyToOne(fetch = FetchType.EAGER)
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
private EntityC relation;
|
private EntityC relation;
|
||||||
|
|
||||||
|
public EntityA() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityA(Long id) {
|
||||||
|
super( id );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRelation(EntityC relation) {
|
||||||
|
this.relation = relation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityC getRelation() {
|
||||||
|
return relation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<EntityC> getAttributes() {
|
||||||
|
return attributes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Entity(name = "EntityB")
|
@Entity(name = "EntityB")
|
||||||
|
@ -88,18 +186,50 @@ public class JoinedInheritanceEagerTest extends BaseCoreFunctionalTestCase {
|
||||||
private Set<EntityD> attributes;
|
private Set<EntityD> attributes;
|
||||||
@ManyToOne(fetch = FetchType.EAGER)
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
private EntityD relation;
|
private EntityD relation;
|
||||||
|
|
||||||
|
public EntityB() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityB(Long id) {
|
||||||
|
super( id );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRelation(EntityD relation) {
|
||||||
|
this.relation = relation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityD getRelation() {
|
||||||
|
return relation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<EntityD> getAttributes() {
|
||||||
|
return attributes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Entity(name = "EntityC")
|
@Entity(name = "EntityC")
|
||||||
public static class EntityC {
|
public static class EntityC {
|
||||||
@Id
|
@Id
|
||||||
private long id;
|
private Long id;
|
||||||
|
|
||||||
|
public EntityC() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityC(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Entity(name = "EntityD")
|
@Entity(name = "EntityD")
|
||||||
public static class EntityD {
|
public static class EntityD {
|
||||||
@Id
|
@Id
|
||||||
private long id;
|
private Long id;
|
||||||
}
|
|
||||||
|
|
||||||
|
public EntityD() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityD(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue