我有一个具有以下结构的类:
public class Machine {
private Set<Line> lines;
}
现在我想要创建一个带有 Criteria 的查询,我可以在其中获取包含特定行的所有机器。
我注意到 Criteria 有一个 Restrictions.in() 但它检查表的字段是否在 Collection 中,我想反过来做。
谢谢你帮助我,干杯,Stef
我有一个具有以下结构的类:
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
基本上,您需要创建一个引用lines
Machine 类元素的第二个标准。IE
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);