【问题标题】:ejb3 entitymanager find after create not getting associated dataejb3 entitymanager在创建后发现没有获取关联数据
【发布时间】:2012-10-19 09:54:19
【问题描述】:

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

客户调用 #1:
1. 创建公司
2. 创建员工
3.addEmployeeToCompany

客户端调用 #2:
1.查找所有公司

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

【问题讨论】:

    标签: ejb-3.0 entitymanager


    【解决方案1】:

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

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

    oracle docs had the answer,这可以通过多种方式进行配置:

    • 通过配置persistence.xml并设置实体的可缓存参数(shared-cache-mode
    • 通过设置EntityManager的属性javax.persistence.cache.retrieveModejavax.persistence.cache.storeMode
    • 通过在 EntityManager 的查找或刷新上设置 javax.persistence.cache.retrieveModejavax.persistence.cache.storeMode

    【讨论】:

      猜你喜欢
      • 2012-09-03
      • 2011-04-08
      • 2016-05-21
      • 2013-02-05
      • 2018-07-23
      • 2014-05-16
      • 2019-04-01
      • 1970-01-01
      • 2019-05-10
      相关资源
      最近更新 更多