我在我的应用程序中使用了不同的分离模块..
jpa-module:包含JPA实体和persistence.xml
rest-module:我正在使用JAX-RS服务和Hibernate来保存数据...
我正在使用Guice注入实体管理器,但是我收到了一个错误(如果我没有将persistence.xml放在rest-module下)
2016-09-07 22:09:06.704:WARN:oejw.WebAppContext:main: Failed startup of context o.e.j.w.WebAppContext@72c28d64{/services,file:///Users/rest-module/target/rest-module-1.0-SNAPSHOT/,STARTING}{../rest-module/target/rest-module-1.0-SNAPSHOT}
javax.persistence.PersistenceException: No Persistence provider for EntityManager named local_persist_unit
以下是我的persistence.xml的内容:
<persistence-unit name="local_persist_unit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<!--PostgreSQL-->
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/postgres"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="hibernate.connection.username" value="postgres"/>
<property name="hibernate.connection.password" value="postgres"/>
<property name="hibernate.archive.autodetection" value="class"/>
<property name="hibernate.id.new_generator_mappings" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.ejb.metamodel.generation" value="disabled"/>
<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.DefaultComponentSafeNamingStrategy"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
任何想法为什么Hibernate无法找到persistence.xml文件?
答案 0 :(得分:0)
当maven多模块项目,我们有REST,Service,DAL或n层的不同模块时,我们可以在不同的模块中定义持久性单元。
您可以在Example : Github project中查看dal层中定义persistence.xml的位置,而不管REST层。
通过将xml添加到
来确保类路径可识别dal/src/main/resources/META-INF
然而,会有依赖层次结构,
REST -> Service -> Dal