비교? 명명 된 쿼리와 같은JPA 쿼리의 나는이 같은 엔티티 있다고 가정 해 봅시다 목록
뭔가 : 기준 API를 사용하여
select c from Class1 c where c.list=:list
쿼리가 잘뿐만 아니라 작동합니다.
비교? 명명 된 쿼리와 같은JPA 쿼리의 나는이 같은 엔티티 있다고 가정 해 봅시다 목록
뭔가 : 기준 API를 사용하여
select c from Class1 c where c.list=:list
쿼리가 잘뿐만 아니라 작동합니다.
아는 한 전체 컬렉션을 속성으로 필터링하는 것은 불가능합니다.
어쩌면 당신은 당신의 조건에 의해 the list
과 함께 모든 클래스 1을 얻기 위해 시도하고 다음과 같이 결과를 필터링 할 수 있습니다 :이 사건과 일치하는 경우
for(Class1 c1 : class1List)
{
List<OneRandomObject> list = c1.getList();
// compare the list with you param
// remove if not match
}
나는 확실하지 않다, 그러나 이것은 무엇을하지 않을 것이다 너는 원하는가?
public List<Class1> matchList(List<OneRandomObject> other) {
// ...
String jpql = "select c from Class1 c where c.list in (:other)"
// ...
}
나는 당신이 지금 묻고있는 것을보고있다. 어떻게 Hibernate Criteria API에서 어떤 일이 일어 났습니까?
Criteria crit = session.createQuery(Class1.class);
Conjunction junction = Restrictions.conjunction();
for(OneRandomObject o: matches) {
junction.add(Restrictions.propertyEq("list", o);
}
crit.add(junction);
1. 괄호를 : other로 추가하면 ArrayList를 OneRandomObject에 넣으려고한다는 형식이 일치하지 않게됩니다. 2. 괄호가 없으면 작동하지만 c.list의 모든 요소가 other의 요소와 일치하는 행을 가져옵니다. 따라서 목록의 모든 요소가 일치하는지 확인하려는 경우에는이 작업을 수행 할 수 없습니다. – Dormouse
예 나뿐만 아니라, 내가 그것을 불쾌한 얻을 수있는, 나를 그냥 엔티티를 변경하기가 쉬울와 함께 긴밀한 연결 것, 모든 목록을 통해 반복의 길을 먹고 싶어하지 않았다 문질러서 그 질문은 내가 ja의 목록 비교를 처리 할 수있는 방법을보기 위해 내가 더 관심을 가졌다. 그들이 쉽게 접근 할 수있는 철저한 객체이기 때문에. 나는 누군가가 더 좋은 아이디어를 가지고 있는지를 기다릴 것이다. 당신은 당신의 대답을 위해서. – sokie
이것은 내가 추측하는 길일 것입니다. 'CollectionUtils'는 수집 통증을 덜어줍니다. 예를 들어 CollectionUtils.subtract (list, otherList) .isEmpty()를 사용하여 콜렉션을 비교합니다. – Dormouse