无法使用@PersistenceContext注入RESOURCE_LOCAL容器管理的EntityManager [英] Cannot inject RESOURCE_LOCAL container managed EntityManager using @PersistenceContext
问题描述
我正在使用JBoss AS 7.1.1并能够配置新的JTA数据源并使用
I am using JBoss AS 7.1.1 and able to configure a new JTA datasource and wire it to my EJB using
@PersistenceContext(unitName="TestPU")
private EntityManager entityManager;
当我尝试使用RESOURCE_LOCAL PersistenceUnit时,我收到的错误是我无法使用RESOURCE_LOCAL PU注入@PersistenceContext。
When I tried to use RESOURCE_LOCAL PersistenceUnit I am getting the error saying I can't inject RESOURCE_LOCAL PU using @PersistenceContext.
我已经按如下方式配置了我的persistence.xml:
I have configured my persistence.xml as follows:
<persistence-unit name="TestPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/xy"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="blah"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
在我的DAO中,
@Stateless
public class UserDAO {
@PersistenceContext(unitName="TestPU")
private EntityManager entityManager;
}
当我在AS 7.1上部署我的应用程序时.1我收到以下错误。
When I deployed my app on AS 7.1.1 I am getting the following error.
JBAS011428: Cannot inject RESOURCE_LOCAL container managed EntityManagers using @PersistenceContext
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor$1.handle(ModuleJndiBindingProcessor.java:169)
at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java:54)
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.processClassConfigurations(ModuleJndiBindingProcessor.java:162)
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:155)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
... 5 more
任何使用RESOURCE_LOCAL PU和@PersistenceC的解决方案ontext?
Any solution to use RESOURCE_LOCAL PU with @PersistenceContext?
推荐答案
JTA:在Java EE环境中,交易由容器和管理员管理。默认情况下,它的 JTA
交易。您可以通过查找或注入来获取实体管理器。
JTA : In Java EE environment, transactions are managed by the container & by default its JTA
transaction. You can get entity manager by lookup or injection.
RESOURCE_LOCAL:在Java SE中,应用程序必须明确地管理事务。资源本地事务是本机事务。你必须创建 EntityManagerFactory
&然后可以从中创建实体管理器。
RESOURCE_LOCAL : In Java SE, application have to manage transactions explicitly & resource local transactions are native transactions. You have to create EntityManagerFactory
& then can create entity manager from it.
当您在应用服务器中部署它时,更改事务类型
在persistence.xml中 JTA
。
As you are deploying it in application server, change the transaction-type
to JTA
in persistence.xml.
这篇关于无法使用@PersistenceContext注入RESOURCE_LOCAL容器管理的EntityManager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!