首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将JavaSE EntityManager附加到JTA

将JavaSE EntityManager附加到JTA
EN

Stack Overflow用户
提问于 2015-10-07 01:25:26
回答 1查看 928关注 0票数 0

我使用JPA作为我的JBoss层上的应用服务器。

对于技术需求,我需要使用JavaSE/应用程序托管方法获取实体持久性管理器。即:

代码语言:javascript
复制
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();

在我设置的属性中:

代码语言:javascript
复制
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放在容器上下文中?

EN

回答 1

Stack Overflow用户

发布于 2015-10-08 18:04:47

在Java环境中,您可以注入EntityManagerFactory并使用它来创建具有自定义属性EntityManager。因此,不是

代码语言:javascript
复制
EntityManagerFactory emf = Persistence.createEntityManagerFactory("idelivery", properties); 
EntityManager em = emf.createEntityManager();

你应该这样做:

代码语言:javascript
复制
// inject emf from container
@PersistenceUnit("idelivery")
private EntityManagerFactory emf;

// and in your method create em with your properties...
EntityManager em = emf.createEntityManager(properties);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32975944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档