В настоящее время я столкнулся с проблемой блокировки объекта в JPA. У меня есть список нескольких объектов из базы данных. Для каждого элемента есть кнопка редактирования, которая загружает представление для редактирования этой записи. Каждый раз, когда клиент пытается редактировать запись, я хочу проверить, заблокирован ли объект, чтобы клиент даже не загружал маску редактирования объекта.Заблокирование объекта
Мой метод, который загружает объект:
[...]
mail = (EMailKonto) query.getSingleResult();
System.out.println(getLock(mail).toString());
setLock(mail, LockModeType.PESSIMISTIC_WRITE);
System.out.println(getLock(mail).toString());
Вызываемые методы:
public void setLock(T entity, LockModeType lock)
{
getEntityManager().lock(entity, lock);
}
public LockModeType getLock(T entity)
{
return getEntityManager().getLockMode(entity);
}
Что происходит, что первый syso печатает NONE, так как там не применяется блокировка не. Затем блокировка устанавливается, а вторая syso печатает PESSIMISTIC_WRITE. Когда я обновляю страницу или пользуюсь другой вкладкой/браузером и нажимаю кнопку редактирования того же объекта, первое syso должно печатать PESSIMISTIC_WRITE, так как я никогда не удаляю блокировку, но снова печатает NONE. Не могли бы вы, ребята, помочь мне понять, как реализовать такую функцию?
Привет
(Я использую Glassfish 3.X и таблицу MySQL InnoDB) –