0

当我使用 EclipseLink JPA query.getResultList() 时,它不会将结果存储在缓存中,因此当我调用 merge 时,第一个调用会执行全选然后更新每个对象。

在缓存中获取查询结果的正确方法是什么?

我正在考虑进行查询,然后为每个结果调用 EntityManager find - 但似乎是错误的。显然我不能先调用 find 因为我不知道对象 ID。

基本上我想将所有数据缓存在内存中(在缓存中)并尽快更新。

谢谢

4

1 回答 1

0

默认情况下,EclipseLink 将 getResultList() 返回的每个对象缓存在共享 (L2) 缓存中。

如果你没有得到缓存,那么你已经错误地配置了一些东西。

请包括您的代码、配置和 SQL 日志。

你用的是弹簧吗?(见http://www.eclipse.org/forums/index.php/t/200321/

确保您没有禁用共享缓存或配置刷新。

您正在阅读多少个对象,从查询到合并需要多长时间?如果您正在读取大量对象,您可能需要增加缓存大小(默认为 100),或者更改缓存类型。

见,http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Caching

于 2013-08-13T12:57:40.467 回答