java Hibernate:按实体(非Id)查询子对象(关联)的条件
我想用Hibernate条件查询子对象列表来查询父对象。我知道如何使用child的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,而只使用实体本身。原因是,否则我将不得不遍历我的孩子列表,提取所有ID,并将它们放入一个我认为最可能不必要的列表中。但我无法找到如何通过实体列表本身进行查询的任何信息):
然后使用
criteriaChilds.add(Restrictions.in("id",listOfChildEntities));
将引发异常:
Child cannot be cast to java.lang.Long
# 1 楼答案
您应该能够将对象传递给限制。在方法中
# 2 楼答案
我认为你应该能够做一些事情,比如: