[英]Hibernate: Criteria Query child objects (associations) by Entity (not 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,而僅使用實體本身。原因是否則,我將不得不遍歷我的孩子列表並提取所有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>)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.