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