我们必须重命名persistence.xml以欺骗WebSphere 7,不要使用其内置的OpenJPA。
使用Spring时很容易做到,只需指示其实体管理器工厂使用另一个位置来执行persistence.xml:
<property name="persistenceXmlLocation" value="META-INF/persistence-xxx.xml"/>
但是现在我们想在没有Spring的情况下使用普通的Hibernate / JPA,并且找不到任何方法来指定备用的persistence.xml位置。
JPA2规范没有说明任何事情......
任何线索?是否可以指示Hibernate使用重命名的persistence.xml?
==
似乎让Hibernate读取重命名的persistence.xml文件是不可能的。 在我的情况下没有必要。
答案 0 :(得分:3)
据我所知,无法更改persistence.xml
文件的位置。
另请查看此文档:Alternate JPA Providers in WebSphere Application Server,您似乎应该能够将Hibernate用作JPA提供程序,方法是在persistence.xml
文件中指定它,并在应用程序中嵌入所需的jar文件
确保您的persistence.xml将Hibernate指定为JPA提供程序:
<persistence>
<persistence-unit name="myapp">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
您还应该能够通过创建共享库并使用它来配置WebSphere以使用备用持久性提供程序来实现此目的。 您可以在此处找到如何操作:Configuring the Java Persistence API (JPA) default persistence provider
修改强>
鉴于此答案中的评论中的信息,似乎可以通过在persistence.xml
中添加这些属性来解决问题,如本文Websphere EntityManagerFactory creation problem中所示:
<property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup" />
<property name="hibernate.transaction.factory_class"
value="org.hibernate.transaction.CMTTransactionFactory" />
WebSphere Application Server文档中的备用JPA提供程序中也提供了相同的信息。
答案 1 :(得分:0)
persistence.xml应存在于META-INF目录中,通常与包含实体类的jar文件一起打包。我所做的是在eclipse下的单独项目中有实体clases,包含persistence.xml的META-INF目录,将其打包为jar文件,并将其包含在应用程序项目依赖项中(即WEB-INF / lib),或者直接将其部署到应用服务器。