Java EJB + JPA + 获取刷新列表的问题
Java EJB + JPA + Problems With Getting Refreshed List
我正在做一个项目。
其中我使用实体中已有的命名查询从数据库中获取列表
每当我更新一个字段的数据时,它就会在数据库中发生变化
但它没有反映在我从命名查询获得的列表中
有什么办法让列表每次都刷新吗?
EJB 是作为一个不同的项目构建的,我已将它作为一个库添加到 Web 应用程序中。
如果我取消部署项目并重新部署它,那么我收到的列表是新的..
需要帮助
提前致谢。
persistence.xml
<jta-data-source> goes </jta-data-source>
<exclude-unlisted-classes> false </exclude-unlisted-classes>
<shared-cache-mode> NONE </shared-cache-mode>
<properties/>
ejb代码
@Override
public List<Universityview> getAllUniversitys () {
return em.createNamedQuery ("Universityview.findAll").
getResultList();
}
您的问题与EJB 本身无关。它更像是一个 hibernate/jpa 问题。取决于您使用的是哪一种。我假设您正在以您的应用程序不知道的方式编辑数据库?就像使用本机查询还是直接在数据库上一样?那么问题是休眠使用二级缓存,其中缓存了结果列表中的对象。由于您没有通过 hibernate 更新对象,因此 hibernate 无法知道它已更改,因此它只是假设它仍然相同并从其二级缓存中获取各个对象。
您可以查看此问题以获取有关如何使二级缓存失效的答案。
Hibernate 2nd level cache invalidation when another process modifies the database
我正在做一个项目。
其中我使用实体中已有的命名查询从数据库中获取列表
每当我更新一个字段的数据时,它就会在数据库中发生变化
但它没有反映在我从命名查询获得的列表中
有什么办法让列表每次都刷新吗?
EJB 是作为一个不同的项目构建的,我已将它作为一个库添加到 Web 应用程序中。
如果我取消部署项目并重新部署它,那么我收到的列表是新的..
需要帮助
提前致谢。
persistence.xml
<jta-data-source> goes </jta-data-source>
<exclude-unlisted-classes> false </exclude-unlisted-classes>
<shared-cache-mode> NONE </shared-cache-mode>
<properties/>
ejb代码
@Override
public List<Universityview> getAllUniversitys () {
return em.createNamedQuery ("Universityview.findAll").
getResultList(); }
您的问题与EJB 本身无关。它更像是一个 hibernate/jpa 问题。取决于您使用的是哪一种。我假设您正在以您的应用程序不知道的方式编辑数据库?就像使用本机查询还是直接在数据库上一样?那么问题是休眠使用二级缓存,其中缓存了结果列表中的对象。由于您没有通过 hibernate 更新对象,因此 hibernate 无法知道它已更改,因此它只是假设它仍然相同并从其二级缓存中获取各个对象。
您可以查看此问题以获取有关如何使二级缓存失效的答案。
Hibernate 2nd level cache invalidation when another process modifies the database