Mar*_*kus 1 java hibernate jpa criteria-api
我想通过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));
Run Code Online (Sandbox Code Playgroud)
但是当列表包含这样的子对象/实体时,如何做到这一点:
List<Child> listOfChildEntities = new ArrayList<Child>();
listOfChildEntities.add(QueryChildFromDatabse);
listOfChildEntities.add(QueryChildFromDatabse);
Run Code Online (Sandbox Code Playgroud)
(这意味着我不使用孩子的ID而只使用Entitiy本身.原因是否则我将不得不遍历我的孩子列表并提取所有ID并将它们放入我认为最不可能的列表中.但我无法找到任何有关如何按实体列表本身查询的信息):
然后上面的代码使用
criteriaChilds.add(Restrictions.in("id",listOfChildEntities));
Run Code Online (Sandbox Code Playgroud)
将抛出异常:
孩子不能被强制转换为java.lang.Long
小智 6
我认为你应该能够做到这样的事情:
Criteria criteria = getSession().createCriteria(Parent.class);
criteria.createCriteria("childs","childs");
criteria.add(Restrictions.in("childs.id", listOfChildLongChildIds));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4873 次 |
| 最近记录: |