Hibernate子查询上的ClassCastException

mma*_*oka 0 hibernate subquery classcastexception

我遇到了以下代码的问题.类id为Long,B类id是嵌入式id,其中一个字段为A类.

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();
Run Code Online (Sandbox Code Playgroud)

这给出了例外:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long
Run Code Online (Sandbox Code Playgroud)

但是这个:

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();
Run Code Online (Sandbox Code Playgroud)

作品.我究竟做错了什么?

mma*_*oka 11

似乎应该在这种情况下使用"Subqueries.propertyIn".