Я сойду с ума от JPA ...
У меня есть такой веб-сервис JAX-WS
@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
Если я позвоню в веб-службу, она работает.Сущность извлекается из базы данных.
Теперь, используя внешний инструмент, я изменяю значение одного поля в своей записи.
Я снова вызываю веб-службу и ... Отображаемая сущность содержит старое значение.
Если я снова развертываю или добавляю entityManager.refresh (myEntity) после запроса, у меня снова хорошее значение.