我正在编写一个相当简单的应用程序,它使用 GWT、Hibernate 和 Google Guice(带有 GIN)。我想做的是使用外部管理器管理事务(例如在 Spring 中使用@Transactional),而不是使用EntityManager#getTransaction。我尝试使用 @Transactional
,但它似乎对我不起作用。
我已经使用 Providers
注入(inject)了 EntityManager,如下所示:
/* import stuff */
public class DbProvider implements Provider<EntityManager> {
public EntityManager get() {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("persdb");
return emf.createEntityManager();
}
}
手动管理交易时似乎可以正常工作。我希望自动管理事务,也希望使用 DBUnit 进行自动化测试。
有人知道怎么解决吗?
最佳答案
在 Guice 中使用 @Transactional
工作 requires three things :
- 您的类路径中需要
guice-persist.jar
- 调用
@Transactional
方法的对象必须由Guice创建 - 方法不得为
私有(private)
关于java - 使用 Hibernate 和 Guice 管理 JavaSE 中的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5287985/