2009-05-19 34 views
2

試圖做插入時,我recieving以下錯誤:休眠 「PreInsertEvent.getSource()」 的NoSuchMethodError

java.lang.NoSuchMethodError:org.hibernate.event.PreInsertEvent.getSource()Lorg /冬眠/事件/ EventSource的;

我見過other人同樣的問題,由於在休眠罐子不兼容,但我相信(根據compatibility matrix

下面是從我POM相關的部分我是正確的。 xml:

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-annotations</artifactId> 
     <version>3.4.0.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-commons-annotations</artifactId> 
     <version>3.3.0.ga</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>3.3.1.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>3.1.0.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>3.4.0.GA</version> 
    </dependency> 

有誰能提醒?

問候

馬蒂

回答

4

我找到了解決辦法,但我不知道這是正確的 - 任何人只要有一個更好的,請告知:

加入CGLIB參考,並明確地排除hibernate(包括3.2)

<dependencies> 
    <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib</artifactId> 
     <version>2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-lang</groupId> 
     <artifactId>commons-lang</artifactId> 
     <version>2.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-annotations</artifactId> 
     <version>3.4.0.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-commons-annotations</artifactId> 
     <version>3.3.0.ga</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.hibernate</groupId> 
       <artifactId>hibernate</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>3.3.1.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>3.1.0.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>3.4.0.GA</version> 
    </dependency> 

    <dependency> 
     <groupId>commons-lang</groupId> 
     <artifactId>commons-lang</artifactId> 
     <version>2.3</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-collections</groupId> 
     <artifactId>commons-collections</artifactId> 
     <version>3.2.1</version> 
    </dependency> 
</dependencies> 
+0

我沒有使用Maven,但我手動添加了所有最新的依賴關係,它工作。 – 2009-08-30 15:21:51

+0

該解決方案適用於我。 – 2011-03-29 02:38:54

0

對我來說,實際問題時發生這個錯誤是

  1. Hibernate的核心依賴是不是在我耳邊包裝。

  2. 默認情況下,它選擇jboss.4.2.3 /.../ lib的hibernate3.jar。

  3. 只需將hibernate-core-3.3.1.GA添加到EAR 打包中的依賴關係列表即可。

  4. 已經在jboss-app.xml中設置了重載的加載器。

  5. 排除hibernate-entitymanager-3.4.0.GA 休眠核(不認爲作爲供給的核心將是3.3.0.SP1 和將被省略無論如何這是必需的)。

它與一些已存在的xml-apis,ejb3-persistence等依賴於hibernate-core的排除有關。

最後,核心依賴關係看起來像這樣。

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>3.3.1.GA</version> 
      <exclusions> 
      <exclusion> 
       <artifactId>ejb3-persistence</artifactId> 
       <groupId>org.hibernate</groupId> 
      </exclusion> 
      <exclusion> 
       <artifactId>jta</artifactId> 
       <groupId>javax.transaction</groupId> 
      </exclusion> 
      <exclusion> 
       <artifactId>persistence-api</artifactId> 
       <groupId>javax.persistence</groupId> 
      </exclusion> 
      <exclusion> 
       <groupId>xml-apis</groupId> 
       <artifactId>xml-apis</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

注:我不認爲CGLIB需要的是它不是此有關。

希望這對某人有用。