ОБНОВЛЕНИЕ и СОЕДИНЕНИЕ с JPQL - PullRequest
2 голосов
/ 22 марта 2011

В руководствах и примерах по JPQL всегда рассматриваются оператор SELECT, а иногда и простые операторы UPDATE.Мне нужно обновить таблицу с помощью объединения.

Я упростил мой env:

KEY
= id
- counter

APPLET
=id
!key_id (1-1)

DEVICE
= id
!applet_id (1-1)
!user_id (1-n)

USER
= id
- login

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

Мне нужно сбросить счетчик каждого KEY, присоединенного к имени пользователя USER "x".

Я попытался использовать синтаксис с UPDATE и JOIN, но безуспешно.Любая подсказка?

Спасибо.

1 Ответ

7 голосов
/ 23 марта 2011

Что вы пробовали и какую ошибку получили?Какова ваша объектная модель?

Возможно, что-то вроде

Update Key k set k.counter = 0 where exists (Select u from User u join u.devices d where u.login = "x" and d.applet.key = k)

См. http://en.wikibooks.org/wiki/Java_Persistence/JPQL_BNF#Update

Вы также можете выбрать объекты и сбросить счетчик в памяти и зафиксироватьизменения.

...