Как указать javax.persistence.lock.scope в данных весны - PullRequest
0 голосов
/ 17 октября 2018

Я использую пружинную загрузку вместе с пружинными данными для обмена данными с базой данных.

@Lock(LockModeType.PESSIMISTIC_WRITE)
@Query("select s from Seat s where s.id=:id")
Seat findById(@Param("id")Integer id);

Я указал блокировку, но я также хочу указать другие параметры, такие как область блокировки, таймаут блокировки.Я искал, но не смог найти.Одно из решений, которое я нашел в Интернете, - это использование

 @QueryHints(value={@QueryHint(name = "javax.persistence.lock.scope",   value   ="EXTENDED" )})

. Но вышеупомянутое решение не работает, и его можно проверить из журналов ниже.

Hibernate: выберите seat0_.id какid1_1_, seat0_.aisle_seat как aisle_se2_1_, seat0_.booking_status в качестве booking_3_1_, seat0_.row_name в качестве row_name4_1_, seat0_.screen_id в качестве screen_i6_1_, seat0_.seat_number в качестве seat_num5_1_ откуда = где_0_0?для обновления

Hibernate: выберите screen0_.id в качестве id1_0_0_, screen0_.name в качестве имени2_0_0_ с экрана screen0_, где screen0_.id =?

- нет оператора блокировки (для обновления для экрана).

Как добавить такой атрибут в весенние данные?

1 Ответ

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

Это, кажется, правильное поведение, поскольку LockModeType.PESSIMISTIC_WRITE является эквивалентом "SELECT FOR UPDATE".

Использование @Lock(LockModeType.PESSIMISTIC_READ) можно увидеть в журналах lock in share mode:

Hibernate: select seat0_.id as id1_0_, seat0_.seat_no as seat_no2_0_ from seat seat0_ where seat0_.id=? lock in share mode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...