gpt4 book ai didi

java - 持久化部署问题

转载 作者:行者123 更新时间:2023-12-01 07:15:42 25 4
gpt4 key购买 nike

我有一个 hibernate 项目,它使用 JPA。

我的 persistence.xml 内容如下:

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="Demo-PU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>java:/DemoDS</non-jta-data-source>
<class>com.demo.framework.entity.ReportDefinitionEntity</class>
<properties>

<!-- Database connection -->
<property name="hibernate.connection.url" value="jdbc:mysql://192.168.9.110:3306/demoDB" />
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.connection.password" value="root" />

<!-- Hibernate dialect -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<!-- Output goodies
-->
<property name="hibernate.query.jpaql_strict_compliance" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.use_sql_comments" value="false" />
<!-- Cache
-->
<property name="hibernate.jdbc.batch_versioned_data" value="true" />
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider" />

</properties>
</persistence-unit>
</persistence>

现在,当我使用 eclipse 运行它时,我没有问题,但是当我在 Jboss 中部署它时,出现以下错误:

ERROR [AbstractKernelController] Error installing to Start: name=persistence.unit:unitName=#Demo-PU state=Create java.lang.ClassCastException: org.hibernate.ejb.HibernatePersistence cannot be cast to javax.persistence.spi.PersistenceProvider

这是我拥有的 Jar 列表

activation.jar
antlr-2.7.6.jar
asm-attrs.jar
asm.jar
cglib-2.1.3.jar
commons-collections-2.1.1.jar
commons-logging-1.1.jar
dom4j-1.6.1.jar
ehcache-1.2.3.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
hibernate-entitymanager.jar
hibernate-tools.jar
hibernate3.jar
javassist.jar
javax.persistence.jar
jdbc2_0-stdext.jar
jta.jar
mysql-connector-java-5.0.5-bin.jar
xml-writer.jar

如何解决这个问题?

最佳答案

ClassCastException 是由于系统中存在两份 javax.persistence API 造成的(一份位于 JBoss 提供的公共(public)类加载器中,一份位于您的应用程序中) 。当在 JBoss 上运行时,您不应该在应用程序中提供此 API,也不要打包它。

顺便说一句,您似乎正在使用 JPA 2.0 persistence.xml 但我不相信您正在使用 Hibernate 的 JPA 2.0 实现(实际上,您似乎正在使用这是一个相当旧的版本,因为我可以看到 commons-logging.jar)。您可能应该解决这个问题,即使用 1.0 版本的 persistence.xml

实际上,在 JBoss 上运行时您很可能应该使用不同的 persistence.xml(使用 JTA 实体管理器和 jta-data-source)。而且混合使用数据源和 Hibernate 内置连接池似乎很奇怪。

关于java - 持久化部署问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3537306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com