基本上,我是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-core
和tapestry-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
)
到目前为止,我没有任何结果:
这是我的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.
当前,我没有足够的经验来了解如何解决此问题,对我来说似乎是正确的。
感谢任何帮助。