2009-05-19 10 views
2

Je recieving l'erreur suivante en essayant de faire des inserts:Mise en veille prolongée "PreInsertEvent.getSource()" NoSuchMethodError

java.lang.NoSuchMethodError: org.hibernate.event.PreInsertEvent.getSource() LORG/hibernate/event/EventSource;

Je l'ai vu other personnes avec le même problème en raison d'une incompatibilité dans des bocaux de mise en veille prolongée, mais je crois que je l'ai droit (selon la compatibility matrix)

Voici la section pertinente de mon 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> 

Quelqu'un peut-il conseiller?

Cordialement

Marty

Répondre

4

J'ai trouvé une solution, mais je ne suis pas sûr qu'il est correct - tout le monde avec une meilleure, s'il vous plaît conseiller:

Ajout d'une référence à Cglib et explicity exclus mise en veille prolongée (incluais 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

Je n'utilise pas Maven, mais j'ai ajouté toutes les dernières dépendances à la main et cela a fonctionné. –

+0

Cette solution fonctionne pour moi. –

1

Ceci est un bug connu: https://hibernate.onjira.com/browse/HVAL-81. Cela se produit lorsque vous référencez une version plus ancienne du validateur Hibernate que Core.

+0

Ceci est juste une copie, regardez dans le bug d'origine [HVAL-75] (https://hibernate.onjira.com/browse/HVAL-75) pour plus d'informations/statut. – raksja

0

Le problème réel pour moi quand cette erreur est

  1. dépendance Hibernate-core était pas dans mon emballage EAR.

  2. Par défaut, il s'agissait de choisir le fichier hibernate3.jar de jboss.4.2.3 /.../ lib. Ajouter simplement hibernate-core-3.3.1.GA à ma liste de dépendances dans EAR .

  3. La surcharge des chargeurs était déjà définie dans jboss-app.xml.

  4. la mise en veille prolongée Exclu-core de hibernate-entitymanager-3.4.0.GA (ne pense pas que cela est nécessaire que le noyau fourni sera 3.3.0.SP1 et sera supprimé de toute façon).

Il a travaillé avec des exclusions de certains APIs XML-déjà existants, EJB3-persistance, etc. dependecies de la mise en veille prolongée-core.

Enfin, la dépendance de base ressemblait à ceci.

<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> 

Note: Je ne pense pas cglib nécessaire est son pas pertinent pour ce contexte.

Espérons que cela soit utile pour quelqu'un.

Questions connexes