Skip to content

Commit 806cf30

Browse files
authored
BAEL-7153: Create Criteria from HQL (#18421)
* BAEL-7153: Create Criteria from HQL * BAEL-7153: Create Criteria from HQL
1 parent cb52e61 commit 806cf30

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.baeldung.hibernate.criteria;
2+
3+
import com.baeldung.hibernate.criteria.model.Item;
4+
import com.baeldung.hibernate.criteria.util.HibernateUtil;
5+
import jakarta.persistence.criteria.CriteriaBuilder;
6+
import jakarta.persistence.criteria.CriteriaQuery;
7+
import jakarta.persistence.criteria.Root;
8+
import org.hibernate.Session;
9+
import org.junit.Before;
10+
import org.junit.Test;
11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
13+
14+
import java.util.List;
15+
16+
import static org.junit.Assert.assertTrue;
17+
18+
public class HqlToCriteriaIntegrationTest {
19+
20+
private static final Logger logger = LoggerFactory.getLogger(HqlToCriteriaIntegrationTest.class);
21+
22+
private Session session;
23+
24+
@Before
25+
public void setUp() {
26+
session = HibernateUtil.getHibernateSession();
27+
}
28+
29+
@Test
30+
public void givenHqlQuery_whenConvertedToCriteriaQuery_thenReturnsFilteredResults() {
31+
// Step 1: Get the CriteriaBuilder from the session
32+
CriteriaBuilder builder = session.getCriteriaBuilder();
33+
34+
// Step 2: Create a CriteriaQuery using HQL (as a string)
35+
// HQL query: "select itemId, itemName from Item order by itemPrice"
36+
CriteriaQuery<Object[]> hqlCriteria = session.getCriteriaBuilder()
37+
.createQuery("select itemId, itemName from Item order by itemPrice", Object[].class);
38+
39+
// Step 3: Mutate the CriteriaQuery
40+
// Let's add a WHERE clause to filter items with itemPrice > 100
41+
Root<Item> root = hqlCriteria.from(Item.class);
42+
hqlCriteria.where(builder.greaterThan(root.get("itemPrice"), 100));
43+
44+
// Step 4: Execute the query and get the result list
45+
List<Object[]> resultList = session.createQuery(hqlCriteria).getResultList();
46+
47+
// Step 5: Simple assertion to check if the result is not empty
48+
assertTrue("The result list should contain items", resultList.size() > 0);
49+
50+
// Log results for demonstration purposes
51+
for (Object[] result : resultList) {
52+
Integer itemId = (Integer) result[0];
53+
String itemName = (String) result[1];
54+
logger.info("Item ID: {}, Item Name: {}", itemId, itemName);
55+
}
56+
}
57+
}

0 commit comments

Comments
 (0)