2011-12-17 3 views
0

다음 코드에 문제가 있습니다. 클래스 ID는 Long이고, 클래스 ID는 필드 중 하나가 A 클래스 인 임베디드 ID입니다.ClassCastException 최대 절전 모드 하위 쿼리

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long 

하지만이 :

List<Long> dd = this.sessionFactory.getCurrentSession().createCriteria(A.class,"a").setProjection(Property.forName("a.id")).list(); 
Criteria cr= this.sessionFactory.getCurrentSession().createCriteria(B.class,"b").add(Restrictions.in("b.id.a.id", dd)); 


List<B> bb = cr.list(); 

작품

DetachedCriteria dc = DetachedCriteria.forClass(A.class,"a").setProjection(Property.forName("a.id"));  
Criteria cr= this.sessionFactory.getCurrentSession().createCriteria(B.class,"b").add(Subqueries.in("b.id.a.id", dc));   
List<B> bb = cr.list(); 

이 예외를 제공합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

10

"Subqueries.propertyIn"이이 상황에서 사용되어야하는 것으로 보입니다.