2011-12-17 11 views
0

次のコードで問題が発生しました。クラスIDはLongです.B class idは、そのフィールドの1つがAクラスである埋め込みIDです。ClassCastExceptionがHibernateサブクエリの場合

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」を使用する必要があります。

関連する問題