Java Hibernate:按实体(非Id)查询子对象(关联)的条件
我想用Hibernate条件查询子对象列表来查询父对象。我知道如何使用child的id,但不直接使用实体 这项工作:Java Hibernate:按实体(非Id)查询子对象(关联)的条件,java,hibernate,jpa,criteria-api,Java,Hibernate,Jpa,Criteria Api,我想用Hibernate条件查询子对象列表来查询父对象。我知道如何使用child的id,但不直接使用实体 这项工作: List<Long> listOfChildLongChildIds = new ArrayList<Long>(); listOfChildLongChildIds.add(new Long(1)); listOfChildLongChildIds.add(new Long(2)); Criteria criteria = getSession().
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));
将引发异常:
无法将子项转换为java.lang.Long
您应该能够在方法中将对象传递给限制
Restrictions.in("childs", <childObjectslist>)
Restrictions.in(“childs”,)
您应该能够在方法中将对象传递给限制
Restrictions.in("childs", <childObjectslist>)
Restrictions.in(“childs”,)
我认为您应该能够做到以下几点:
Criteria criteria = getSession().createCriteria(Parent.class);
criteria.createCriteria("childs","childs");
criteria.add(Restrictions.in("childs.id", listOfChildLongChildIds));
我认为你应该能够做如下事情:
Criteria criteria = getSession().createCriteria(Parent.class);
criteria.createCriteria("childs","childs");
criteria.add(Restrictions.in("childs.id", listOfChildLongChildIds));
非常感谢你的回答!但问题是(至少在我的测试中,您的建议失败了!?)您命名为“childs”的参数必须是(根据文档)子对象的属性/成员。当我通过ID进行查询时,它必须以某种方式是ID。我需要的是类似以下语句:Restrictions.idi();您是否有任何您的答案所依据的特殊文件?但无论如何感谢您的回答。错误:索引::4处缺少in或OUT参数。有什么线索吗?非常感谢你的回答!但问题是(至少在我的测试中,您的建议失败了!?)您命名为“childs”的参数必须是(根据文档)子对象的属性/成员。当我通过ID进行查询时,它必须以某种方式是ID。我需要的是类似以下语句:Restrictions.idi();您是否有任何您的答案所依据的特殊文件?但无论如何感谢您的回答。错误:索引::4处缺少in或OUT参数。任何线索?错误:索引::4处缺少IN或OUT参数。任何线索?错误:索引::4处缺少IN或OUT参数。有线索吗?