如何为挂毯项目的运行时环境实现PersitenceProvider?

时间:2019-06-21 14:45:28

标签: jpa tapestry persistence-provider

基本上,我是Tapestry的新手,因此我必须使用此框架进行项目。为此,我开始了Tutorial Point和DoubleNegative Jumpstart教程。

到目前为止,我设法完成了Tutorial的休眠部分,但是在JPA部分有一些困难。我目前在JPA集成方面遇到问题,涉及将PersistenceProvider实施到运行时环境中。

每次构建项目时,它都会向我返回此错误消息:

[ERROR] ioc.Registry java.lang.IllegalStateException: No PersistenceProvider implementation available in the runtime environment.

但是我有一个persistence.xml文件,并且在正确的位置(src / main / resources / META-INF)。

由于我的项目需要Java 1.7,因此我将依赖项tapestry-coretapestry-jpa${tapestry-release-version})的最新版本和hibernate-core的5.1.17使用。 / p>

(这里,对应于休眠的依赖树集成

[INFO] +- org.hibernate:hibernate-core:jar:5.1.17.Final:compile
[INFO] |  +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile
[INFO] |  +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] |  +- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] |  +- antlr:antlr:jar:2.7.7:compile
[INFO] |  +- org.apache.geronimo.specs:geronimo-jta_1.1_spec:jar:1.1.1:compile
[INFO] |  +- org.jboss:jandex:jar:2.0.3.Final:compile
[INFO] |  +- com.fasterxml:classmate:jar:1.3.0:compile
[INFO] |  +- org.dom4j:dom4j:jar:2.1.1:compile
[INFO] |  \- org.hibernate.common:hibernate-commons-annotations:jar:5.0.1.Final:compile
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.7.19:compile
[INFO] |  +- org.slf4j:slf4j-api:jar:1.7.19:compile
[INFO] |  \- log4j:log4j:jar:1.2.17:compile

到目前为止,我没有任何结果:

  • 将提供程序从org.hibernate.ejb.HibernatePersistence更改为持久性文件中的当前版本
  • 将持久性中使用的命令替换为AppModule
  • 使用映射平衡器到持久性文件中
  • 将addJarFileUrl函数用于configurePersistenceUnitInfos(注释如下,但没用)

这是我的persistence.xml文件的一部分:

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="ryuJPA" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="hibernate.archive.autodetection" value="class" />
<property name="hibernate.dialect" value="com.mysema.query.jpa.support.ExtendedHSQLDialect" />
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver" />
<property name="hibernate.connection.url" value="jdbc:hsqldb:file:./localhost/ryu;shutdown=true" />
<property name="hibernate.connection.user" value="sa" />
<property name="hibernate.show_sql" value="true"/> 
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>

AppModule.java的一部分与之相对应:

@Contribute(EntityManagerSource.class)
    public static void configurePersistenceUnitInfos(MappedConfiguration<String,PersistenceUnitConfigurer> cfg) {
        PersistenceUnitConfigurer configurer = new PersistenceUnitConfigurer() {
            public void configure(TapestryPersistenceUnitInfo unitInfo) {
                unitInfo
                //.addJarFileUrl("hibernate-release-5.1.17.Final\\lib\\jpa\\hibernate-entitymanager-5.1.17.Final.jar")
                //.addJarFileUrl("org.hibernate.ejb.HibernatePersistence")
                .addProperty("hibernate.archive.autodetection", "class")
                .addProperty("hibernate.dialect", "com.mysema.query.jpa.support.ExtendedHSQLDialect")
                .addProperty("hibernate.connection.driver_class", "org.hsqldb.jdbcDriver")
                .addProperty("hibernate.connection.url", "jdbc:hsqldb:file:./localhost/ryu;shutdown=true")
                .addProperty("hibernate.show_sql", "sa")
                .addProperty("hibernate.show_sql", "true")
                .addProperty("hibernate.hbm2ddl.auto", "update")
                ;
                }
            };
            cfg.add("ryuJPA", configurer);
            }

当前,码头无法编译项目,返回值为:

[ERROR] ioc.Registry java.lang.IllegalStateException: No PersistenceProvider implementation available in the runtime environment.

当前,我没有足够的经验来了解如何解决此问题,对我来说似乎是正确的。

感谢任何帮助。

0 个答案:

没有答案