"ДЛЯ ОБНОВЛЕНИЯ NOWAIT", Oracle, springframework, QuerySyntaxException - PullRequest
0 голосов
/ 30 октября 2018

Я использую реализацию интерфейса, который простирается от org.springframework.data.repository.CrudRepository и org.springframework.data.jpa.repository.JpaSpecificationExecutor

Проблема у меня есть запрос org.springframework.data.jpa.repository.Query с параметром org.springframework.data.repository.query.Param

У меня есть этот запрос ..

@Query(value = " SELECT c FROM Ctype c WHERE c.code = :code"
        + " FOR UPDATE nowait ")
Ctype findOneByCodeNoWait(
        @Param("code") String code);

У меня есть эта ошибка:

Caused by: java.lang.IllegalArgumentException: Validation failed for query for method public abstract org.company.persistence.entity.Ctype org.company.persist.repository.CtypeRepository.findOneByCodeNoWait(java.lang.String)!
Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: FOR near line 1, column 111 [ SELECT c FROM org.company.persistence.entity.Ctype c WHERE c.code = :code FOR UPDATE nowait ]
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: FOR near line 1, column 111 [ SELECT c FROM org.company.persistence.entity.Ctype c WHERE c.code = :code FOR UPDATE nowait ]\"}}"

Я проверял другой пост, но они используют EntityManager ...

Как это решить?

1 Ответ

0 голосов
/ 30 октября 2018

Попробуйте так:

@Lock(LockModeType.PESSIMISTIC_READ) @QueryHints(@QueryHint(name = "javax.persistence.lock.timeout",value = "0")) @Query(value = " SELECT c FROM Ctype c WHERE c.code = :code")

Я проверил это с моим текущим проектом и этим кодом:

@Lock(LockModeType.PESSIMISTIC_READ)
@QueryHints(@QueryHint(name = "javax.persistence.lock.timeout",value = "0"))
@Query("select t from Event t left join fetch t.details ")
List<Event> findAllWithDetails();

`

создает sql как:

SELECT event0_.event_id ... FROM EVENTS event0_ left outer join event_details details1_ ON event0_.event_id = details1_.event_id FOR UPDATE NOWAIT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...