Spring jpa запрос SQLGrammarException при присоединении @ManyToMany - PullRequest
1 голос
/ 13 марта 2020

У меня есть Way POJO в моем приложении Spring Boot, вот как это выглядит:

public class Way {
    @Id
    private Long wayID;
    @ToString.Exclude
    @JsonIgnore
    @ManyToMany(fetch = FetchType.LAZY,cascade=CascadeType.ALL)
    private List<Relation> relations=new ArrayList<>();

Теперь я хочу выбрать все способы, которые имеют отношениеID данного значения. relationID является членом Relation POJO.

Так вот мой запрос @Query("select w from Way w join Relation relations where relations.relationID=?1") List<Way> selectAllWaysByRelationID(Long relationID);

Но, похоже, ошибка в моей части JOIN происходит сбой и появляется сообщение: org.springframework.dao.InvalidDataAccessResourceUsageException: не удалось подготовить оператор; SQL [выберите way0_.wayid как wayid1_5_ из way way0_ отношение внутреннего соединения отношение1_ на где отношение1_.relationid =?]; вложенное исключение - org.hibernate.exception.SQLGrammarException: не удалось подготовить оператор

Как мне решить эту проблему?

Я также пытался это сделать:

    @Query("select way from Way.relations full join Way.relations rel where rel.relationID=?1")
    List<Way> selectAllWaysByRelationID(Long relationID);

Это тоже:

    @Query("select way from Way way join Way.relations rel where rel.relationID=?1")
    List<Way> selectAllWaysByRelationID(Long relationID);

1 Ответ

2 голосов
/ 13 марта 2020

При использовании JOIN необходимо использовать псевдоним Way с таким полем relations, как w.relations r вместо Way.relations.

Полный запрос приведен ниже:

@Query("select w from Way w join w.relations r where r.relationID=?1")
List<Way> selectAllWaysByRelationID(Long relationID);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...