11
我使用JBoss AS 7.1.1并能够使用不能注入RESOURCE_LOCAL容器管理的EntityManager使用@PersistenceContext
@PersistenceContext(unitName="TestPU")
private EntityManager entityManager;
配置一个新的JTA数据源,并将其连接到我的EJB当我试图用RESOURCE_LOCAL PersistenceUnit我我得到错误说我不能使用@PersistenceContext注入RESOURCE_LOCAL PU。
我已经配置我的persistence.xml如下:
<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我收到以下错误。
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与@PersistenceContext?
感谢您的解释。因此,无法将JTA数据源配置为WAR/EAR的一部分?我们可以使用注解来完成,但我正在寻找基于xml的配置。 – 2012-04-25 07:52:04
@ sivaprasadreddy.k不客气。如果您已经配置了数据源,那么您可以在persistence.xml中用来提及它。 –
2012-04-25 09:11:46
@NayanWadekar你可以请我们与RESOURCE_LOCAL(persistence.xml)和EntityManagerFactory(java代码)共享一个例子。 – Sabarish 2014-06-04 13:41:29