【问题标题】:JPA entity manager factory creation failing; JBoss, Hibernate and SQL ServerJPA 实体管理器工厂创建失败; JBoss、Hibernate 和 SQL Server
【发布时间】:2012-03-26 03:32:55
【问题描述】:

运行 JBoss 5.1,Hibernate 作为 JPA 提供者。支持 SQL Server 2008。

我在服务器启动时收到错误消息,即java.lang.ClassCastException: org.hibernate.dialect.SQLServerDialect cannot be cast to org.hibernate.dialect.Dialect。非常明确的信息,但我对根本原因感到困惑。我在类路径上有 hibernate-core-3.5.1-Final.jar,并且存在必要的类文件。

当它被用作传递给 Spring AnnotationSessionFactoryBean 的属性时,此方言设置在项目中没有给出错误,但我正在尝试将一个部分重构为直接 EJB/JPA。对于它的价值,这是我的持久性配置:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
version="1.0">
<persistence-unit name="[my name here]">
    <jta-data-source>java:jdbc/[my name here]</jta-data-source>
    <properties>
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
        <property name="hibernate.cache.use_query_cache" value="true" />
        <property name="hibernate.cache.use_second_level_cache" value="true" />
        <property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.EhCacheProvider" />
    </properties>
</persistence-unit>

我讨厌这种“这是我的配置和堆栈跟踪”的问题,但我已经在这个问题上摸索了一个半小时,但未能提出任何新的想法。

【问题讨论】:

    标签: sql-server hibernate jboss


    【解决方案1】:

    ClassCastException 是由系统中有两个 javax.persistence API 副本引起的。在 JBoss 上运行时,您不应该在应用程序中打包持久性 jar。从您的应用程序中删除所有与持久性相关的 jar,异常应该会消失。

    【讨论】:

    • 是否可以删除 Jboss 中的持久性 jar 文件而不是 war 文件?甚至可能完全禁用持久性服务?
    猜你喜欢
    • 2020-01-16
    • 2011-03-15
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    相关资源
    最近更新 更多