java - eclipselink setter 更新提示

标签 java eclipselink setter hint

我面临的实际问题是无论缓存的内容如何都能够强制进行 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/

最佳答案

persist的调用是不必要的。 persist 用于使 transient 实体持久化并受管理,并且您的实体已经持久化并受管理。

我真的没有看到将行的所有列设置为其当前值的更新的意义。但如果您确实想触发此类不必要的更新,请考虑添加一个虚拟 counter 持久字段并递增它。 EclipseLink 将检测其缓存值的更改,并触发更新。

关于java - eclipselink setter 更新提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8493842/

相关文章:

java - Linkedin 集成 Android

java - 由于使用保留字作为列名,日期类型的实体管理器提交错误

java - 使用连接表的 JPA 一对多单向关系

java - 不使用 getter 和 setter 时的文档

java - 如何将git java项目导入到Eclipse中

java - Android 应用程序中的 MVP 与事件驱动

c++ - 如何为数组编写 setter 和 getter? (c++)

kotlin - Kotlin 中的 Setter 重载

java - 如何从 Android 设备的应用程序打开或关闭互联网连接?

java - 如何在 orm.xml 中使用 SpEL?