Разница в результатах моего родного запроса и JPQL (JPA) - PullRequest
4 голосов
/ 26 декабря 2011

мой собственный запрос (это работа):

Update XXX SET preDeck=deck, deck=deck+1 WHERE ...

результат собственного запроса: deck = 1 и preDeck = 0 (это то, что я хочу)

Но в JPQL это не происходит:

UPDATE XXX SET preDeck=deck, deck=deck+1 WHERE ...

Результат: колода = 1 и предк = 1 тоже

Какое решение?

УВАЖЕНИЕ

1 Ответ

4 голосов
/ 26 декабря 2011

Интересный вопрос. Каков сгенерированный SQL для вашего запроса JPQL? Какой движок JPA вы используете?

В любом случае, решение состоит в том, чтобы избегать запросов на обновление при использовании JPA, особенно если число сущностей для обновления невелико. Запросите сущности, обновите их состояние и позвольте JPA сбросить изменения за вас.

Если необходимо обновить большое количество объектов, вы все равно можете использовать собственный запрос, а не запрос JPQL. Или вы можете использовать два запроса: один, который устанавливает preDeck, и один, который устанавливает колоду в preDeck + 1.

...