我必须在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级缓存中。