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 для возврата его экземпляра.

Другие вопросы по тегам