LockMode в EJB3 Постоянство NamedQuery - PullRequest
0 голосов
/ 20 октября 2011

Как мы указываем LockMode в EJB3 Persistence NamedQuery? Я хочу добавить Pessimistic LockMode к моему существующему выбору, чтобы я мог обновлять при необходимости, но на удивление у объекта Query нет метода setLockMode (xxx) (насколько я понимаю, если JPA, asubset персистентности EJB3, предоставляет setLockMode, персистентность EJB3 должна иметь доступный метод тоже).

Query query = em.createNamedQuery("findOptoutStudent");
query.setParameter("optoutIndicator", optoutIndicator);
List<Student> students = query.getResultList();
return students.get(0);

Я бы предположил, что мне не нужно менять запрос вручную на "выбрать для обновления".

Спасибо Кевин

1 Ответ

0 голосов
/ 10 ноября 2011

Режим пессимистической блокировки:

  • PESSIMISTIC_READ, который представляет общую блокировку. Сбой запроса блокировки, когда другой менеджер сущностей получил PESSIMISTIC_WRITE.

  • PESSIMISTIC_WRITE, который представляет собой эксклюзивный замок. Сбой запроса на блокировку, когда другой менеджер сущностей получил одну из блокировок объекта.

Применение блокировки на объекте

entityManager.lock(object, LockModeType.PESSIMISTIC_READ)

Снятие блокировки впоследствии

entityManager.lock(object, LockModeType.NONE)
...