JPA findById为null,而id不为null,并且对象使用PESSIMISTIC WRITE在数据库中

我必须在DB的并发访问中创建一个对象链

为此,我想读取并锁定数据库中最后一个创建的对象,以便在创建新对象时使用它。

我有一个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级缓存中。

ks_xpd 回答:JPA findById为null,而id不为null,并且对象使用PESSIMISTIC WRITE在数据库中

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3138597.html

大家都在问