2013-04-18 4 views

답변

1

아는 한 전체 컬렉션을 속성으로 필터링하는 것은 불가능합니다.

어쩌면 당신은 당신의 조건에 의해 the list과 함께 모든 클래스 1을 얻기 위해 시도하고 다음과 같이 결과를 필터링 할 수 있습니다 :이 사건과 일치하는 경우

for(Class1 c1 : class1List) 
{ 
    List<OneRandomObject> list = c1.getList(); 
    // compare the list with you param 
    // remove if not match 
} 
+0

예 나뿐만 아니라, 내가 그것을 불쾌한 얻을 수있는, 나를 그냥 엔티티를 변경하기가 쉬울와 함께 긴밀한 연결 것, 모든 목록을 통해 반복의 길을 먹고 싶어하지 않았다 문질러서 그 질문은 내가 ja의 목록 비교를 처리 할 수있는 방법을보기 위해 내가 더 관심을 가졌다. 그들이 쉽게 접근 할 수있는 철저한 객체이기 때문에. 나는 누군가가 더 좋은 아이디어를 가지고 있는지를 기다릴 것이다. 당신은 당신의 대답을 위해서. – sokie

+0

이것은 내가 추측하는 길일 것입니다. 'CollectionUtils'는 수집 통증을 덜어줍니다. 예를 들어 CollectionUtils.subtract (list, otherList) .isEmpty()를 사용하여 콜렉션을 비교합니다. – Dormouse

1

나는 확실하지 않다, 그러나 이것은 무엇을하지 않을 것이다 너는 원하는가?

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); 
+0

1. 괄호를 : other로 추가하면 ArrayList를 OneRandomObject에 넣으려고한다는 형식이 일치하지 않게됩니다. 2. 괄호가 없으면 작동하지만 c.list의 모든 요소가 other의 요소와 일치하는 행을 가져옵니다. 따라서 목록의 모든 요소가 일치하는지 확인하려는 경우에는이 작업을 수행 할 수 없습니다. – Dormouse

관련 문제