Spring JPA HQL enum "в предложении" запрос - PullRequest
0 голосов
/ 01 мая 2020

Как написать HQL "в запросе предложения" со списком перечислений?

Резерв. сущность здесь:

@Enumerated(EnumType.STRING)
private ReservationState state;

Репозиторий здесь:

 @Query(value = "select rez from Reservation rez where (:state is null or rez.state in (:state))",countQuery="")
List<Reservation> getByState(@Param("state") List<ReservationState> state)

Запрос здесь:

localhost:8080/reservation/getbystate?state=ACCEPTED&state=CREATED

Ошибка здесь:

antlr. NoViableAltException: неожиданный узел AST: {вектор}

org.hibernate.hql.internal.ast.QuerySyntaxException: неожиданный узел AST: {вектор}

, если я удаляю пустую проверку из запроса этот запрос не работает для нулевых запросов "state". Но я принимаю государство, в любом случае это будет работать. Мне нужно передать параметр List как NULL, так и 'n'length. Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

работает таким образом

(rez.state in (:state) or :state is null)

вместо

(:state is null or rez.state in (:state))
0 голосов
/ 01 мая 2020

пожалуйста, попробуйте это

  @Query(value = "select rez from Reservation rez where (rez.state is null or rez.state in (:state))",countQuery="")
List<Reservation> getByState(@Param("state") List<ReservationState> state)
...