Skip to content

Commit d4a5afd

Browse files
committed
HHH-19572 test for where(List)
1 parent 124bb5a commit d4a5afd

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.jpa.criteria;
6+
7+
import jakarta.persistence.Entity;
8+
import jakarta.persistence.GeneratedValue;
9+
import jakarta.persistence.Id;
10+
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
11+
import org.hibernate.testing.orm.junit.JiraKey;
12+
import org.hibernate.testing.orm.junit.Jpa;
13+
import org.junit.jupiter.api.Test;
14+
15+
import java.util.List;
16+
import java.util.UUID;
17+
18+
import static org.junit.jupiter.api.Assertions.assertEquals;
19+
20+
@Jpa(annotatedClasses = CriteriaRestrictionTest.Doc.class)
21+
class CriteriaRestrictionTest {
22+
@JiraKey( "HHH-19572" )
23+
@Test void test(EntityManagerFactoryScope scope) {
24+
scope.inTransaction(
25+
entityManager -> {
26+
Doc doc1 = new Doc();
27+
doc1.title = "Hibernate ORM";
28+
doc1.author = "Gavin King";
29+
doc1.text = "Hibernate ORM is a Java Persistence API implementation";
30+
entityManager.persist( doc1 );
31+
Doc doc2 = new Doc();
32+
doc2.title = "Hibernate ORM";
33+
doc2.author = "Hibernate Team";
34+
doc2.text = "Hibernate ORM is a Jakarta Persistence implementation";
35+
entityManager.persist( doc2 );
36+
}
37+
);
38+
scope.inTransaction(
39+
entityManager -> {
40+
var builder = entityManager.getCriteriaBuilder();
41+
var query = builder.createQuery( Doc.class );
42+
var d = query.from( Doc.class );
43+
// test with list
44+
query.where( List.of(
45+
builder.like( d.get( "title" ), "Hibernate%" ),
46+
builder.equal( d.get( "author" ), "Gavin King" )
47+
) );
48+
var resultList = entityManager.createQuery( query ).getResultList();
49+
assertEquals( 1, resultList.size() );
50+
assertEquals( "Hibernate ORM is a Java Persistence API implementation",
51+
resultList.get( 0 ).text );
52+
}
53+
);
54+
scope.inTransaction(
55+
entityManager -> {
56+
var builder = entityManager.getCriteriaBuilder();
57+
var query = builder.createQuery( Doc.class );
58+
var d = query.from( Doc.class );
59+
// test with varargs
60+
query.where(
61+
builder.like( d.get( "title" ), "Hibernate%" ),
62+
builder.equal( d.get( "author" ), "Hibernate Team" )
63+
);
64+
var resultList = entityManager.createQuery( query ).getResultList();
65+
assertEquals( 1, resultList.size() );
66+
assertEquals( "Hibernate ORM is a Jakarta Persistence implementation",
67+
resultList.get( 0 ).text );
68+
}
69+
);
70+
}
71+
@Entity static class Doc {
72+
@Id
73+
@GeneratedValue
74+
UUID uuid;
75+
private String title;
76+
private String author;
77+
private String text;
78+
}
79+
}

0 commit comments

Comments
 (0)