我有一个工作持久性定义,适用于java级别测试。现在我想将它合并到一个Web应用程序中,该应用程序在context.xml中将数据库连接定义为JNDI。我需要更改什么才能使它与JNDI而不是persistence.xml一起使用,或者至少从那里获取信息?
答案 0 :(得分:2)
您的 persistence.xml 开头应该是这样的(使用 EclipseLink 作为实现), jdbc / MYNAME JNDI名称:< / p>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="myPersistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<non-jta-data-source>java:comp/env/jdbc/MYNAME</non-jta-data-source>
<class>org.test.entity.MyEntity</class>
...
</persistence-unit>
<persistence>
当然,您应该设置适合您环境的配置。在示例中,我使用非JTA DataSource :根据您的一条评论,您的 DataSource 似乎不符合JTA。对于 Hibernate ,持久性提供程序应该是不同的。
答案 1 :(得分:0)
在使用JPA时必须使用persistence.xml。因为JPA必须检查persistence.xml。所以你可以同时使用persistence.xml和jndi。