Как заставить Hibernate использовать AND в запросе на обновление? - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь обновить необработанный составной первичный ключ с помощью hibernate.

Hibernate использует следующий стиль для таких обновлений:

update mytable set mycolumn=321 where (left_pk, right_pk) = (123, 456);

Можно ли принудительно использовать hibernate для использованияследующий стиль?:

update mytable set mycolumn=321 where left_pk = 123 and right_pk = 456;

Оба запроса работают, но с большой разницей (по крайней мере, в MariaDB).
Если мы используем транзакцию repeatable read, то первый запрос блокирует всю таблицу для обновлений ивторой запрос блокирует только одну строку для обновлений.

Я бы предпочел заблокировать только одну строку, поэтому мне нужно использовать второй запрос.

1 Ответ

0 голосов
/ 22 февраля 2019

Вы можете перейти на NamedQueries заход в Hibernate, например:

 //Create Query 
 @NamedQueries({ @NamedQuery(name = "   YOUR QUERY NAME", 
        query = "from DeptEmployee where department = :department and emp = :emp") })


// set multiple parameters
 query.setParameter("department",department)
     .setParameter("emp", emp)

Попробуйте сделать это.

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