我有一个提供许多服务的项目。我在项目中使用的是纯JPA球衣。
我以这种方式使用entityManager,entityTransaction和entityManagerFactory:对于每个服务,我从DBManager.getEntityManager()获取一个EntityManager,并从其entityManager获取和EntityTransaction
file
在每种需要交易的方法中,首先我检查public class DBManager {
public static EntityManager getEntityManager() {
return Persistence.createEntityManagerFactory("projectDataSource").getEntityManager();
}
且交易未激活
然后我开始交易。
我退出缓存,然后完成所有工作:在本示例中,我从数据库中获取所有活动用户,并且将用户列表返回给客户端的服务
。我的一项服务是:transaction != null
@getUsersService
此代码有效,但并非总是如此!
我还有另一项服务可以改变用户;该用户还可以工作并更改数据库中的用户数据,但是当我调用getUsers服务时调用了更改服务后,它将检索旧的数据库数据
为什么会这样?
我使用entityManager和entityTransaction的方式正确吗?