簡體   English   中英

休眠:條件按實體(不是ID)查詢子對象(關聯)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM