Hibernate Criteria - 同一个表上的多个连接

时间:2013-11-27 00:32:47

标签: java sql hibernate

我正在尝试在休眠标准中重新创建以下SQL。

select id from A join B b1 on b1.a_id = a.id and b1.name = "Some name"
                 join B b2 on b2.a_id = a.id and b2.name = "Some other name"
                 ...join B bN on bN.a_id = a.id and bN.name = "...."

其目标是仅从A中找到具有表B中所有受追捧名称的ID。

我尝试使用多个别名,但它抱怨集合上有重复的关联路径。

我正在使用标准,因为我需要将它扩展为N(其中N是一些小整数)并且我很乐意在过去使用它但我只是完全坚持如何使其表现出来。我尝试过的所有东西都会产生一个连接 - 这不会产生正确的结果。

我也对如何使其发挥作用的其他建议持开放态度......但是如果我能够找到有用的标准。

我最终通过使用分离标准和子查询解决了这个问题。它效率不高,但非常灵活。

问题在于我必须从A中找到ID,其中相关表B C D的某些子集的字段值等于某些包含搜索列表。该解决方案对每个新连接点进行1次查询。最终结果类似于

Select id from A where A.id in (Select id from B where B.val in (1,2,3)) or A.id in (Select id from C where c.val in (1,2,3,4))...

0 个答案:

没有答案