JPA findById null, тогда как id не равно null и Object находится в БД с использованием PESSIMISTIC WRITE - PullRequest
0 голосов
/ 08 ноября 2019

Мне нужно создать цепочку объектов в рамках одновременного доступа к БД.

. Для этого я хочу прочитать и заблокировать последний созданный объект в БД, чтобы использовать его при создании нового.

У меня есть результат для 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-го уровня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...