区分JPA中的多个列

时间:2012-09-27 08:08:55

标签: java hibernate jpa join

我有一个courier_routes表,它有一个位置表的两个外键。 courier_routes表中的列是start_location_id和end_location_id。 (我正在使用Oracle)

我想在courier_routes表中找到信使所有不同的位置。

考虑这个例子

|id |start_location_id| end_location_id|...
|1|1|2|
|2|1|3|
|3|4|5|
|4|2|1|

我想找回ids 1 2 3 4 5

我的SQL有效

SELECT loc FROM (
SELECT start_location_id AS loc FROM courier_routes 
UNION
SELECT end_location_id AS loc FROM courier_routes);

我想把它翻译成JPA。 Hibernate不支持联合,所以我考虑做子查询。这个问题是它可能会影响性能。

我在考虑(伪代码......)

之类的东西
SELECT id FROM locations where id in (
    (SELECT start_location_id FROM courier_routes) 
       OR
    (SELECT end_location_id FROM courier_routes));

有更简单的方法吗?这个表会变大,所以我真的不想使用子查询。

我是否应该通过在集合中添加两个单独的查询结果来在java中进行联合?

由于

1 个答案:

答案 0 :(得分:0)

您可以在HQL中的两列上进行连接:

SELECT distinct loc.id FROM locations loc, courier_routes c 
   where loc.id=c.start_location_id OR c.id=c.end_location_id

希望这有帮助!