我正在使用 JPA 并想知道构建此查询的最佳方法。
这是我的数据模型(这完全是人为的和毫无意义的):
表“事物”与表“高度”“宽度”和“长度”具有多对多关系
高度,宽度,长度每个都有很多 -与表“创建者”的一对一关系
对于给定的事物,我希望所有创建者与高度、宽度或长度中的至少一个相关联(请注意,单个事物可以有多个高度 - 正如我所说的那样,这是人为的)。
例如,如果我只关心身高,我会这样做:
SELECT c FROM Creator c
INNER JOIN c.heights height
WHERE height.thing = :thing
有没有办法用 OR 指定多个内连接?我假设多个内部连接将用作布尔 AND。
这是我目前最好的猜测:
SELECT c FROM Creator c
WHERE EXISTS (SELECT h FROM Height h WHERE h.creator = c AND h.thing = :thing)
OR EXISTS (SELECT w FROM Width w WHERE w.creator = c AND w.thing = :thing)
OR EXISTS (SELECT l FROM Length l WHERE l.creator = c AND l.thing = :thing)
有没有更好的方法来构造这个查询?我的真实案例在 height-width-length 集合中有大约 10 个元素。