我想注释以下结构:
我有这样的疑问:
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 对象应包含两个 JobEndPoint,它们像一对一关系一样映射。我需要两次 JOIN 表两次检查相同的值,唯一不同的是我在 WHERE 语句中检查的列“c”。
@OneToOne
private JobEndPoint from;
@OneToOne
private JobEndPoint to;
我现在的问题是数据库列和对象字段差异很大,我不知道如何添加 WHERE 语句。
创建 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()