繁体   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