Entity JOIN с использованием спецификации данных Spring
В настоящее время я возлюсь со спецификациями Spring Data JPA. Я столкнулся со следующим вопросом: Как я могу определить следующее соединение SQL только со спецификациями JPA?
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'
Обратите внимание, что Competition
, Participation
а также Team
являются объектами JPA (@Entity
)!
1 ответ
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 или другим объектом, то вы можете определить другой класс переноса и использовать операцию NEW JPQL для возврата его экземпляра.