【发布时间】:2016-07-16 16:03:40
【问题描述】:
我使用 Jersey 作为 WebService 和 Hibernate EntityManager 来保存我的数据...
如果我这样写我的方法,持久性将正常工作:
@GET
@Path("/")
public Response test() {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1");
EntityManager em = emf.createEntityManager();
Test product = new Test("desc");
em.getTransaction().begin();
if (!em.contains(product)) {
em.persist(product);
em.flush();
}
em.getTransaction().commit();
em.close();
emf.close();
return Response.status(Response.Status.OK).build();
}
但是我想使用 com.google.inject.persist.Transactional 中的@Transactional 来使代码更简洁:
@GET
@Transactional
@Path("/")
public Response test() {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1");
EntityManager em = emf.createEntityManager();
Test product = new Test("desc");
em.persist(product);
em.close();
emf.close();
return Response.status(Response.Status.OK).build();
}
但是使用此代码,数据不会记录到数据库中!
任何想法
【问题讨论】:
-
你定义TransactionalManager了吗?
-
不,因为我没有使用 Spring .. 我想改用 Guice
标签: hibernate jpa jersey transactional