【发布时间】:2012-06-05 15:02:36
【问题描述】:
我有两个相关的表:
+-----------+ +----------+
| First | * 1 | Second |
+-----------+ --------- +----------+
| fk_Second | | id |
| version | | ... |
| ... | | y |
| x | +----------+
+-----------+
Hibernate 有一个从 First 到 Second 的 ManyToOne 定义。 {fk_Second, version} 是 First 表的 composite-id(尽管我认为它在这种情况下不相关)。
我正在尝试编写 Criteria 调用,它在 SQL 中看起来像:
SELECT * FROM First WHERE
First.fk_Second = Second.id AND
First.x = Second.y
我在生成最后一位时遇到了麻烦 - 额外的连接条件。
Criteria c = session.createCriteria(First.class);
.createCriteria("second", "join_between_first_and_second")
.add(Restrictions.eqProperty("y", "x") // <- fails: "x" is not found
在这种情况下我不能使用 HQL 查询。有什么不同的写法吗?可以这样写避免子查询/DetachedCriteria吗?
【问题讨论】:
标签: java database hibernate join criteria