Jpa Can';t使用JTA数据源创建EntityManager
我试图使用JTA数据源实例化EntityManager,但我总是得到NullPointerException。 这是我的环境: 服务器:JBossas7.0 JPA:2.0 数据库:MySQL persistence.xmlJpa Can';t使用JTA数据源创建EntityManager,jpa,jboss7.x,Jpa,Jboss7.x,我试图使用JTA数据源实例化EntityManager,但我总是得到NullPointerException。 这是我的环境: 服务器:JBossas7.0 JPA:2.0 数据库:MySQL persistence.xml <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="WebStock" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>stockmanagementDS</jta-data-source>
<class>prv.stockmanagement.business.Product</class>
</persistence-unit>
</persistence>
但是当我使用它的getter时,我在这里得到了NullPointerException:
public EntityManager getEntityManager() {
return em;
}
调试显示它为空
以下是standalone.xml中的数据源定义:
<datasource jndi-name="stockmanagementDS" pool-name="stockmanagement" enabled="true" jta="true" use-java-context="true" use-ccm="true">
<connection-url>
jdbc:mysql://localhost:3306/kitchen_stock
</connection-url>
<driver>
mysql
</driver>
<security>
<user-name>
root
</user-name>
<password>
rootroot
</password>
</security>
<statement>
<prepared-statement-cache-size>
100
</prepared-statement-cache-size>
<share-prepared-statements/>
</statement>
</datasource>
jdbc:mysql://localhost:3306/kitchen_stock
mysql
根
根
100
“mysql”是我在数据源之后定义的驱动程序的名称:
com.mysql.jdbc.Driver
org.h2.jdbcx.JdbcDataSource
持久性在META-INF下,它是一个动态的web项目,并且运行良好。使用实体管理器的分类不是EJB
有什么提示吗?让我提醒您注意以下时刻: 1.我没有看到您从
数据源
中引用的MySql的代码驱动程序
:
<driver>
mysql
</driver>
3.您只能将
EntityManeger
注入EJB
或带有@Transactional
注释的类中。检查以确保您的DAO类是EJB bean。1-谢谢您的回答。我编辑了我的问题,以便您可以找到驱动程序定义部分和更多信息。我应该改用吗?我使用的是5.1.18版本的mysql,我做的和你展示的一样(除了我使用的路径),2-是的,持久性在META-INF文件夹下。3-它不是EJB,应该是吗?否则我怎么能使用PersistenceUnit呢
<driver>
mysql
</driver>
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql.jdbc">
<resources>
<resource-root path="mysql-connector-java-5.1.38-bin.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
</dependencies>
</module>
<driver name="mysql" module="com.mysql.jdbc">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
web
src
main
java
..
resources
META-INF
persistence.xml
webapp
..