【发布时间】:2012-04-16 05:51:38
【问题描述】:
我想使用 Hibernate Criteria Query 通过子对象列表来查询父对象。我知道如何使用孩子的 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));
会抛出异常:
无法将子级强制转换为 java.lang.Long
【问题讨论】:
标签: java hibernate jpa criteria-api