Skip to content

Commit d610e53

Browse files
OBreidenbachdreab8
authored andcommitted
HHH-9375 - Testcase: EntityGraph and isMember functions generates illegal sql
1 parent b8a3774 commit d610e53

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/graphs/EntityGraphTest.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@
2020
import javax.persistence.OneToMany;
2121
import javax.persistence.Subgraph;
2222
import javax.persistence.Table;
23+
import javax.persistence.TypedQuery;
24+
import javax.persistence.criteria.CriteriaBuilder;
25+
import javax.persistence.criteria.CriteriaQuery;
26+
import javax.persistence.criteria.Expression;
27+
import javax.persistence.criteria.Root;
2328

2429
import org.hibernate.Hibernate;
2530
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;
@@ -248,6 +253,50 @@ public void attributeNodeInheritanceTest() {
248253
em.close();
249254
}
250255

256+
@Test
257+
@TestForIssue(jiraKey = "HHH-9735")
258+
public void loadIsMemeberQueriedCollection() {
259+
260+
EntityManager em = getOrCreateEntityManager();
261+
em.getTransaction().begin();
262+
263+
Bar bar = new Bar();
264+
em.persist( bar );
265+
266+
Foo foo = new Foo();
267+
foo.bar = bar;
268+
bar.foos.add(foo);
269+
em.persist( foo );
270+
271+
em.getTransaction().commit();
272+
em.clear();
273+
274+
em.getTransaction().begin();
275+
foo = em.find(Foo.class, foo.id);
276+
277+
CriteriaBuilder cb = em.getCriteriaBuilder();
278+
CriteriaQuery<Bar> cq = cb.createQuery(Bar.class);
279+
Root<Bar> from = cq.from(Bar.class);
280+
281+
Expression<Set<Foo>> foos = from.get("foos");
282+
283+
cq.where(cb.isMember(foo, foos));
284+
285+
TypedQuery<Bar> query = em.createQuery(cq);
286+
287+
EntityGraph<Bar> barGraph = em.createEntityGraph( Bar.class );
288+
barGraph.addAttributeNodes("foos");
289+
query.setHint("javax.persistence.loadgraph", barGraph);
290+
291+
Bar result = query.getSingleResult();
292+
293+
assertTrue( Hibernate.isInitialized( result ) );
294+
assertTrue( Hibernate.isInitialized( result.foos ) );
295+
296+
em.getTransaction().commit();
297+
em.close();
298+
}
299+
251300
@Entity
252301
@Table(name = "foo")
253302
public static class Foo {

0 commit comments

Comments
 (0)