0
나는 이것과 비슷한 sql Query를 가지고있다.Hibernate에서 Having 및 By 절을 어떻게 사용합니까?
SELECT VERSION_ID FROM VIEWTEST
where (item_id='I001' and value ='V001')
or (item_id='I002' and value ='V002')
or (item_id= 'I003'and value ='V003')
group by VERSION_ID
having count(1) = 3
내 ViewTest 엔티티는 이와 유사합니다.
@Column(name = "version_id")
private String versionId;
@Column(name = "item_id")
private String itemId;
@Column(name = "value")
private String value;
다음은 나에게 작성된 Crieteria Query입니다.
CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<String> query = criteriaBuilder.createQuery(String.class);
Root<ViewTest> testRoot = query.from(ViewTest.class);
List<Predicate> predicates = new ArrayList<Predicate>();
Predicate p1 = criteriaBuilder.equal(testRoot.get("itemId"), "I001");
Predicate p2 = criteriaBuilder.equal(testRoot.get("itemId"), "I002");
Predicate p3 = criteriaBuilder.equal(testRoot.get("itemId"), "I003");
Predicate v1 = criteriaBuilder.equal(testRoot.get("value"), "V001");
Predicate v2 = criteriaBuilder.equal(testRoot.get("value"), "V002");
Predicate v3 = criteriaBuilder.equal(testRoot.get("value"), "V003");
predicates.add(criteriaBuilder.and(p1 , v1));
predicates.add(criteriaBuilder.and(p2 , v2));
predicates.add(criteriaBuilder.and(p3 , v3));
이제 그룹 기준을 추가하고 절을이 기준에 추가하는 방법을 알지 못합니다.
누군가 나를 도울 수 있습니까?
더 좋은 방법이 있습니다.
방금 내 코드에 아래에 추가되었습니다.
query.groupBy(testRoot.<String> get("versionId"));
query.having(criteriaBuilder.in(criteriaBuilder.count(testRoot.get("versionId"))).value(
queryCount));
이것은 트릭을 만들었습니다.