0

我目前有一个@WebService管理请求列表的入口点(通过 a ),每个入口点都是一个 DAO 操作(即 createEmployee、createCompany 等)。一家公司有多名员工,当我的命令列表如下时:

客户调用 #1:
1. createCompany
2. createEmployee
3. addEmployeeToCompany

客户电话#2:
1. findAllCompanies

我得到了所有公司,但没有与他们相关的员工。
如果我重新部署应用程序,并且 findAllCompanies 命令带有所有信息(公司 + 员工),则似乎存在一些持久性错误。
我所有的 bean 都是无状态的(它们应该是有状态的吗?)并且我的实体管理器被注入到它们上(应该只注入到 webservice bean 上并传递给其他人吗?

4

1 回答 1

0

问题是由于 JPA 的缓存造成的。

查询第一次运行良好,所有后续查询都从缓存中获取。

oracle docs有答案,这可以通过多种方式进行配置:

  • 通过配置 persistence.xml 并设置实体的可缓存参数 ( shared-cache-mode)
  • 通过设置 EntityManager 的属性javax.persistence.cache.retrieveModejavax.persistence.cache.storeMode
  • 通过设置javax.persistence.cache.retrieveModejavax.persistence.cache.storeModeEntityManager 的查找或刷新
于 2012-10-23T11:26:09.773 回答