1

我目前正在处理 Spring Data JPA 规范。我遇到了以下问题:如何仅使用 JPA 规范定义以下 SQL 连接?

SELECT * FROM competition c
   LEFT JOIN participation p ON c.id = p.competition_id
   LEFT JOIN team t ON p.team_id = t.id
   WHERE t.name = 'WDB'

请注意CompetitionParticipationTeam是 JPA 实体 ( @Entity)!

4

1 回答 1

0

JPQL 查询可能如下所示;

SELECT c FROM competition c 
LEFT JOIN c.participation p
LEFT JOIN p.team t
WHERE t.name = 'WDB'

以上假设根据问题的原始描述,实体的定义如下(访问器和其他细节省略)。

@Entity
public class Competition
@ManyToOne
public List<Participation> participation;

@Entity
public class Participation
@ManyToOne
public List<Team> team;

@Entity
public class Team
private String name;

如果您的返回对象不是 Competition 或其他实体对象,那么您可以定义另一个传输类并利用 JPQL 的 NEW 操作返回它的一个实例。

于 2018-04-07T18:53:28.147 回答