2

我想注释以下结构:

我有这个查询:


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 语句。

4

1 回答 1

0

创建一个 JPA 存储库,然后键入一个自定义@Query.

我假设您已经将parentandJobEndPoint类链接到aandb字段。(为此,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()
于 2020-12-06T21:38:43.743 回答