ClassCastException в подзапросе Hibernate - PullRequest
0 голосов
/ 18 декабря 2011

У меня проблема со следующим кодом.Идентификатор класса - Long, идентификатор класса B - это встроенный идентификатор, где одно из его полей - класс 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();

Это дает исключение:

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();

работает.Что я делаю не так?

1 Ответ

11 голосов
/ 18 декабря 2011

Оказалось, что «Subqueries.propertyIn» следует использовать в этой ситуации.

...