2012-03-26 37 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