当数据库列和对象字段差异很大时,Java JPA 内部 JOIN WHERE 子句

问题描述 投票:0回答:1
SELECT A.*, BES.*, BES_2.*
INNER JOIN BES ON A.a = BES.a AND A.b = BES.b
INNER JOIN BES AS BES_2 ON A.a = BES_2.a AND A.b = BES_2.b
WHERE (BES.c = N'foo') AND (BES_2.c = N'bar')

我有实体Job(代表A)和JobEndPoint(代表BES)。 Job 对象应包含两个 JobEndPoints,它们像一对一关系一样映射。我需要连接表两次,检查相同的值,唯一不同的是我在 WHERE 子句中检查的列 c。

@OneToOne
private JobEndPoint from;

@OneToOne
private JobEndPoint to;

数据库列和对象字段有很大不同。

如何添加 WHERE 子句?

java jpa join persistence inner-join
1个回答
0
投票

创建 JPA 存储库,然后输入自定义

@Query

我假设您已经将

parent
JobEndPoint
类链接到
a
b
字段。 (为此,请在
JobEndPoint
上定义多列 id,并在父类中指定 joinColumns。)

@Query("SELECT u FROM parent 
        LEFT JOIN u.from bes
        LEFT JOIN u.to bes2
        WHERE bes.c = 'foo' 
        AND bes2.c = 'bar'")
Set<Parent> findMatchingParents()
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.