Hibernate:Criteria按实体查询子对象(关联)(不是Id)

我想通过Hibernate Criteria Query的子对象列表来查询Parent对象。 我知道如何用孩子的ID做,但不直接使用实体。

这工作:

List<Long>  listOfChildLongChildIds = new ArrayList<Long>();
listOfChildLongChildIds.add(new Long(1));
listOfChildLongChildIds.add(new Long(2));

Criteria criteria = getSession().createCriteria(Parent.class);
Criteria criteriaChilds = criteria.createCriteria("childs");
criteriaChilds.add(Restrictions.in("id", listOfChildLongChildIds));

但如何做到这一点,当列表包含像这样的子对象/实体:

List<Child>  listOfChildEntities = new ArrayList<Child>();
listOfChildEntities.add(QueryChildFromDatabse);
listOfChildEntities.add(QueryChildFromDatabse);

(这意味着我不会使用孩子的ID,而只使用Entitiy本身。原因是否则我必须遍历我的孩子列表并提取所有ID并将它们放入列表中,我认为这很可能是不必要的。但我无法找到任何信息如何查询实体列表本身):

然后上面的代码使用

criteriaChilds.add(Restrictions.in("id",listOfChildEntities));

会抛出一个异常:

孩子不能转换为java.lang.Long


我认为你应该能够做到这样的事情:

Criteria criteria = getSession().createCriteria(Parent.class);
criteria.createCriteria("childs","childs");
criteria.add(Restrictions.in("childs.id", listOfChildLongChildIds));

您应该能够将对象传递给Restrictions.in方法。

Restrictions.in("childs", <childObjectslist>)
链接地址: http://www.djcxy.com/p/6319.html

上一篇: Hibernate: Criteria Query child objects (associations) by Entity (not Id)

下一篇: How to add a "on" clause on hibernate criteria?