将包含elements()的HQL查询转换为Criteria API

时间:2010-01-26 12:40:37

标签: java hibernate criteria criteria-api

我无法将以下HQL查询转换为Criteria API,我想知道我是否可以从你们那里得到一些帮助


SELECT child FROM Foo AS child 
WHERE child IN (SELECT elements(obj.foos) FROM Bar AS obj WHERE obj.id = ?)

换句话说,我想在ID等于?的Bar实例中获取Bar引用的所有Foos。

编辑:请注意,实体之间没有双向关系,因此Foo不知道哪些Bars有引用它。其次,Bar到Foo的引用是ManyToMany类型。

2 个答案:

答案 0 :(得分:0)

这些例子不等于你,但它们是相似的:

Hibernate Criteria Subquery

Hibernate Criteria With Property Not In (Subquery)

您可以将它们作为示例使用。

答案 1 :(得分:-2)

类似的东西:

List<Foo> foos = session.createCriteria(Foo.class).createAlias("bar", "bar").add(Restrictions.eq("bar.id", 12345)).list();

对应于:

class Foo {
   Bar bar;
}

class Bar {
   long id;
}