我面临的实际问题是无论缓存的内容如何都能够强制进行 eclipselink 更新。当前,如果新更新与缓存中的值相同,eclipselink 不会创建新的更新语句。我不想<property name="eclipselink.query-results-cache" value="false"/>
在persistence.xml
.
我正在寻找一种解决方案,我可以在其中指定要更新的实体不使用缓存中的值。
EntityManager em = getEntityManager();
EntityTransaction t = em.getTransaction();
t.begin();
Ticket ticket = get(ticketId);
if (ticket == null) {
return null;
}
ticket.setState(status);
em.persist(ticket);
t.commit();
如果我将上述更新(setState
方法)更改为 sql 查询,那么查询对象可以选择执行 setHint,我们可以在其中提及setHint(QueryHints.CACHE_USAGE, CacheUsage.DoNotCheckCache)
. 我也不能这样做,因为使用了很多这样的更新。
在上面的代码片段中,更新是使用 setter 方法进行的,在这种情况下,我们如何指定忽略缓存的提示?或者有没有其他方法可以使用 setter 对象进行强制更新?
我的问题与此类似:http: //www.eclipse.org/forums/index.php/m/660750/