Мне нужно создать цепочку объектов в рамках одновременного доступа к БД.
. Для этого я хочу прочитать и заблокировать последний созданный объект в БД, чтобы использовать его при создании нового.
У меня есть результат для MAX (ID), объект фактически находится в BD, но при вызове JPA для получения объекта из id возвращается null
Я пытался получить последний объект напрямую,но результат все еще нулевой
StringBuilder query = new StringBuilder()
.append("SELECT MAX(dup.id) ")
.append("FROM Duplicata dup ")
.append("WHERE dup.site.id = :siteId ")
.append("AND dup.account.id = :accountId ");
TypedQuery<Long> lastId = JPA.em()
.createQuery(query.toString(), Long.class)
.setParameter("siteId", duplicata.site.id)
.setParameter("accountId", duplicata.account.id)
.setLockMode(LockModeType.PESSIMISTIC_WRITE);
final Long id = lastId.getSingleResult();
return id == null ? null : Duplicata.findById(id);
Я не понимаю, почему объект находится в БД, но, кажется, не находится в кеше JPA 1-го уровня.