ejb3 entitymanager在创建未获取关联数据后查找

时间:2012-10-19 09:54:19

标签: ejb-3.0 entitymanager

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

客户电话#1:
 1. createCompany
 2. createEmployee
 3. addEmployeeToCompany

客户电话#2:
 1. findAllCompanies

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

1 个答案:

答案 0 :(得分:0)

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

第一次查询工作正常,所有后续查询都从缓存中自行提供。

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

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