최대 절전 모드에서 제한 및 기준을 사용하여“안개”를 달성하는 방법은 무엇입니까?
-
10-07-2019 - |
문제
카테고리 목록이 있습니다. 2,3 행을 제외하여 카테고리 목록이 필요합니다. 기준과 제한을 사용하여 최대 절전 모드를 통해 달성 할 수 있습니까?
해결책
귀하의 질문은 다소 불분명합니다. "카테고리"가 루트 엔티티이고 "2,3"이 ID (또는 카테고리의 일부 속성 값 "이라고 가정하면 다음을 사용하여 제외 할 수 있습니다.
Criteria criteria = ...; // obtain criteria from somewhere, like session.createCriteria()
criteria.add(
Restrictions.not(
// replace "id" below with property name, depending on what you're filtering against
Restrictions.in("id", new long[] {2, 3})
)
);
동일한 작업을 수행 할 수 있습니다 DetachedCriteria
.
다른 팁
Session session=(Session) getEntityManager().getDelegate();
Criteria criteria=session.createCriteria(RoomMaster.class);
//restriction used or inner restriction ...
criteria.add(Restrictions.not(Restrictions.in("roomNumber",new String[] { "GA8", "GA7"})));
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
List<RoomMaster> roomMasters=criteria.list();
버전 Hibernate 5.2 이후의 새로운 기준 :
CriteriaBuilder criteriaBuilder = getSession().getCriteriaBuilder();
CriteriaQuery<Comment> criteriaQuery = criteriaBuilder.createQuery(Comment.class);
List<Long> ids = new ArrayList<>();
ids.add(2L);
ids.add(3L);
Root<Comment> root = getRoot(criteriaQuery);
Path<Object> fieldId = root.get("id");
Predicate in = fieldId.in(ids);
Predicate predicate = criteriaBuilder.not(in);
criteriaQuery
.select(root)
.where(predicate);
List<Comment> list = getSession()
.createQuery(criteriaQuery)
.getResultList();
제휴하지 않습니다 StackOverflow