我有一个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中进行联合?
由于
答案 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
希望这有帮助!