2012-03-26 38 views
0

运行JBoss 5.1,Hibernate作为JPA提供者。支持SQL Server 2008.JPA实体经理工厂创建失败; JBoss,Hibernate和SQL Server

我在服务器启动时收到一个错误,它是java.lang.ClassCastException: org.hibernate.dialect.SQLServerDialect cannot be cast to org.hibernate.dialect.Dialect。非常明确的信息,但我对于根本原因感到困惑。我在classpath上有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> 

我讨厌这几样“这里是我的配置,我的堆栈跟踪”的问题,但我一直在这闲逛了一个小时,一半,我没有提出任何新的想法。

回答

1

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

+0

是否可以删除Jboss中的持久性jar文件而不是war文件?也许甚至完全禁用持久性服务? – ziggy 2013-01-06 20:19:52