簡體   English   中英

如何創建標准,其中參數是表上集合字段的成員?

[英]How do I create a criteria where the parameter is a member of a collection field on the table?

我有一個具有以下結構的類:

public class Machine {
    private Set<Line> lines;
}

現在,我要使用Criteria創建一個查詢,在其中可以獲取包含特定行的所有計算機。

我注意到Criteria有一個Restrictions.in(),但是它檢查表的字段是否在Collection中,而我想用另一種方法來做。

感謝您的幫助,干杯,Stef

下列Hibernate文檔應該會有所幫助: http : //docs.jboss.org/hibernate/orm/4.0/manual/en-US/html/querycriteria.html#querycriteria-associations

基本上,您需要創建一個第二個條件,該條件引用Machine類的各lines元素。

Criteria machineCriteria = session.createCriteria(Machine.class);
Criteria lineCriteria = machineCriteria.createCriteria("lines");
lineCriteria.add(Restrictions.eq("fieldNameOfLineClass", valueOfFieldNameOfLineClass);
machineCriteria.list();

我發現此語法更有意義且更緊湊。 假設您手中有Line實例的ID,這將為您提供所需的東西。

    // we have a Long lineId
    Criteria crit = session.createCriteria(Machine.class)
        .createAlias("lines", "line")
        .add(Restrictions.eq("line.id", lineId);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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