我使用JPA作为我的JBoss层上的应用服务器。
对于技术需求,我需要使用JavaSE/应用程序托管方法获取实体持久性管理器。即:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("idelivery", properties);
EntityManager em = emf.createEntityManager();
MyEntity exUser= new MyEntity();
try{
Context context = new InitialContext();
UserTransaction userTransaction = (UserTransaction)context.lookup("java:comp/UserTransaction");
userTransaction.begin();
em.persist(exUser);
userTransaction.commit();在我设置的属性中:
properties.put ("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect");
properties.put("javax.persistence.provider", "org.hibernate.jpa.HibernatePersistenceProvider");
properties.put("javax.persistence.transactionType", "JTA");
properties.put("javax.persistence.jtaDataSource", dataSourcePath); 当然,问题在于上面的代码行不能将entitymanager绑定到容器JTA事务管理器。
所以我的问题是:有没有一些例子或方法可以让实体管理器加入一个复杂的JTA事务?我不知道。也许使用CDI生成器,我可以将entitymanager放在容器上下文中?
发布于 2015-10-08 18:04:47
在Java环境中,您可以注入EntityManagerFactory并使用它来创建具有自定义属性EntityManager。因此,不是
EntityManagerFactory emf = Persistence.createEntityManagerFactory("idelivery", properties);
EntityManager em = emf.createEntityManager();你应该这样做:
// inject emf from container
@PersistenceUnit("idelivery")
private EntityManagerFactory emf;
// and in your method create em with your properties...
EntityManager em = emf.createEntityManager(properties);https://stackoverflow.com/questions/32975944
复制相似问题