mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-16 16:15:06 +00:00
HHH-9375 - Testcase: EntityGraph and isMember functions generates illegal sql
This commit is contained in:
parent
b8a3774cb4
commit
d610e53a80
@ -20,6 +20,11 @@
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.Subgraph;
|
||||
import javax.persistence.Table;
|
||||
import javax.persistence.TypedQuery;
|
||||
import javax.persistence.criteria.CriteriaBuilder;
|
||||
import javax.persistence.criteria.CriteriaQuery;
|
||||
import javax.persistence.criteria.Expression;
|
||||
import javax.persistence.criteria.Root;
|
||||
|
||||
import org.hibernate.Hibernate;
|
||||
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;
|
||||
@ -248,6 +253,50 @@ public void attributeNodeInheritanceTest() {
|
||||
em.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestForIssue(jiraKey = "HHH-9735")
|
||||
public void loadIsMemeberQueriedCollection() {
|
||||
|
||||
EntityManager em = getOrCreateEntityManager();
|
||||
em.getTransaction().begin();
|
||||
|
||||
Bar bar = new Bar();
|
||||
em.persist( bar );
|
||||
|
||||
Foo foo = new Foo();
|
||||
foo.bar = bar;
|
||||
bar.foos.add(foo);
|
||||
em.persist( foo );
|
||||
|
||||
em.getTransaction().commit();
|
||||
em.clear();
|
||||
|
||||
em.getTransaction().begin();
|
||||
foo = em.find(Foo.class, foo.id);
|
||||
|
||||
CriteriaBuilder cb = em.getCriteriaBuilder();
|
||||
CriteriaQuery<Bar> cq = cb.createQuery(Bar.class);
|
||||
Root<Bar> from = cq.from(Bar.class);
|
||||
|
||||
Expression<Set<Foo>> foos = from.get("foos");
|
||||
|
||||
cq.where(cb.isMember(foo, foos));
|
||||
|
||||
TypedQuery<Bar> query = em.createQuery(cq);
|
||||
|
||||
EntityGraph<Bar> barGraph = em.createEntityGraph( Bar.class );
|
||||
barGraph.addAttributeNodes("foos");
|
||||
query.setHint("javax.persistence.loadgraph", barGraph);
|
||||
|
||||
Bar result = query.getSingleResult();
|
||||
|
||||
assertTrue( Hibernate.isInitialized( result ) );
|
||||
assertTrue( Hibernate.isInitialized( result.foos ) );
|
||||
|
||||
em.getTransaction().commit();
|
||||
em.close();
|
||||
}
|
||||
|
||||
@Entity
|
||||
@Table(name = "foo")
|
||||
public static class Foo {
|
||||
|
Loading…
x
Reference in New Issue
Block a user