【发布时间】:2019-03-09 14:44:12
【问题描述】:
我要被 JPA 气疯了……
我有一个这样的 JAX-WS Web 服务
@WebService
public class MyService
{
@EJB private MyDbService myDbService;
...
System.out.println(dmrService.read());
...
}
我的 EJB 包含
@Stateless
public class MyDbService
{
@PersistenceContext(unitName="mypu")
private EntityManager entityManager;
public MyEntity read()
{
MyEntity myEntity;
String queryString = "SELECT ... WHERE e.name = :type";
TypedQuery<MyEntity> query = entityManager.createQuery(queryString,MyEntity.class);
query.setParameter("type","xyz");
try
{
myEntity= query.getSingleResult();
}
catch (Exception e)
{
myEntity= null;
}
return myEntity;
}
在我的 persistence.xml 中,mypu 有 transaction-type="JTA" 和 jta-data-source
如果我调用网络服务,它就会工作。从数据库中检索实体。
现在,我使用外部工具更改记录中一个字段的值。
我再次调用 web 服务,并且...显示的实体包含旧值。
如果我再次部署,或者如果我在请求后添加 entityManager.refresh(myEntity),我将再次获得良好的价值。
【问题讨论】:
标签: java jpa eclipselink weblogic12c