persistence.xml看起来像这样:
<persistence-unit name="testPU" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <non-jta-data-source>jdbc/test</non-jta-data-source> <jar-file>../../lib/app-services-1.0.jar</jar-file> <exclude-unlisted-classes>false</exclude-unlisted-classes> </persistence-unit>
这是一个Web项目,因此部署单元是一个war文件。我尝试引用的jar文件位于 WEB-INF / lib / 文件夹中, persistence.xml 位于 WEB-INF / classes / META-INF 文件夹中。部署时,它只是告诉我
“警告:无法找到文件(忽略):file:… / .. / lib / app-services-1.0.jar”。
我也试过,我能想到的,即每一个可能的路径 ../lib/app-services-1.0.jar , LIB /应用服务-1.0.jar 。
正确的做法是什么?
以防万一有人偶然发现:jar-file-statement仅有效。当将持久性单元部署为企业归档文件(.ear)的一部分时- 在其他所有情况下(.war),persistence.xml必须驻留在/ META-INF /中,并且不能引用持久性单元外部的类(请参阅:http : //javahowto.blogspot.com/2007/06/where- to-put-persistencexml-in-web- app.html)。因此,据我所知,没有办法在WEB-INF / classes / META- INF中创建一个persistence.xml来引用不存在于WEB-INF / classs中的类。