반응형
최대 절전 모드 제한 및 / 또는 조합
Hibernate Restrictions를 사용하여 어떻게 이것을 달성 할 수 있습니까?
(((A='X') and (B in('X',Y))) or ((A='Y') and (B='Z')))
작품을 생각하다
Criteria criteria = getSession().createCriteria(clazz);
Criterion rest1= Restrictions.and(Restrictions.eq(A, "X"),
Restrictions.in("B", Arrays.asList("X",Y)));
Criterion rest2= Restrictions.and(Restrictions.eq(A, "Y"),
Restrictions.eq(B, "Z"));
criteria.add(Restrictions.or(rest1, rest2));
버전 Hibernate 5.2 이후의 새로운 기준의 경우 :
CriteriaBuilder criteriaBuilder = getSession().getCriteriaBuilder();
CriteriaQuery<SomeClass> criteriaQuery = criteriaBuilder.createQuery(SomeClass.class);
Root<SomeClass> root = criteriaQuery.from(SomeClass.class);
Path<Object> expressionA = root.get("A");
Path<Object> expressionB = root.get("B");
Predicate predicateAEqualX = criteriaBuilder.equal(expressionA, "X");
Predicate predicateBInXY = expressionB.in("X",Y);
Predicate predicateLeft = criteriaBuilder.and(predicateAEqualX, predicateBInXY);
Predicate predicateAEqualY = criteriaBuilder.equal(expressionA, Y);
Predicate predicateBEqualZ = criteriaBuilder.equal(expressionB, "Z");
Predicate predicateRight = criteriaBuilder.and(predicateAEqualY, predicateBEqualZ);
Predicate predicateResult = criteriaBuilder.or(predicateLeft, predicateRight);
criteriaQuery
.select(root)
.where(predicate);
List<SomeClass> list = getSession()
.createQuery(criteriaQuery)
.getResultList();
참고 URL : https://stackoverflow.com/questions/8126589/hibernate-criteria-restrictions-and-or-combination
반응형
'Programing' 카테고리의 다른 글
jQuery에서 목록을 선택하는 옵션을 추가하는 방법 (0) | 2020.11.23 |
---|---|
Android에서 사용 가능한 알림 소리 목록을 가져 오는 방법 (0) | 2020.11.23 |
반응 형 입력 필드 비활성화 (0) | 2020.11.23 |
드롭 다운 목록 .NET MVC에서 optgroup을 지원합니까? (0) | 2020.11.23 |
readonly =“true”와 readonly =“readonly”의 차이점은 무엇입니까? (0) | 2020.11.23 |