org.hibernate.AnnotationException: Sammlung hat weder generischen Typ noch OneToMany.targetEntity ()

7

Ich habe Hibernate Tools verwendet, um mein Hibernate POJO Mapping zu generieren.

Leider scheint der von den Hibernate-Tools generierte Code nicht zu funktionieren, ich bekomme die Ausnahme

org.hibernate.AnnotationException: Die Sammlung hat weder einen generischen Typ noch OneToMany.targetEntity ()

Die Code-Teile, die die Ausnahme erzeugen, sind

%Vor%

Nach diesem Beitrag

Ссылка

und dieser Beitrag

Ссылка

Sie müssen den von Hibernates generierten Code selbst ändern.

Dies ist eine Sache, die ich vermeiden möchte. Irgendwelche Ideen, was könnte das Problem sein?

Grüße

JS

    
Jeremy S. 04.08.2011, 07:57
quelle

6 Antworten

12

Ich habe eine Lösung für mich gefunden, die funktioniert.

Überprüfen Sie einfach "Java 5 Syntax verwenden" wie im beigefügten Screenshot und Hibernate Tools generieren die korrekten generischen Typen für Sammlungen.

    
Jeremy S. 05.08.2011, 13:41
quelle
6

Was die Ausnahmen Ihnen sagen, ist klar - yout @OneToMany collection sollte entweder einen konkreten Typ ( Set<AnotherEntity> ) oder @OneToMany(targetEntity=AnotherEntity.class)

angeben     
Bozho 04.08.2011 08:31
quelle
2

Verwenden Sie Java 5 Syntax ist die richtige Antwort ... aber es ist sehr irreführend. Sollte Java 5+ Syntax verwenden, wer würde denken, Java 5 zu verwenden.

    
ChromeDome 29.09.2016 12:44
quelle
1

Suchen Sie auf "Red Hat hbm2java docs", da der Link unterbrochen ist. Zusätzlicher Bonus, damit Sie nicht suchen müssen. Aktivieren Sie beide Kontrollkästchen, um das generierte Java zu "modernisieren". Leider zeigen die Beschriftungen der Kontrollkästchen nicht an, was passiert, wenn Sie sie überprüfen. Man würde denken, dass "Java 5 Syntax verwenden" viele Implikationen hat und da es standardmäßig deaktiviert ist, ist es nicht das gewünschte / typische Verhalten.

Auf jeden Fall beide Kästchen markieren, um Annotationen und Generika zu verwenden. Dann informieren Sie Eclipse unter "Aufräumen" -Optionen, um die UID der seriellen Version zu generieren. Nahm mich 3 Tage, um das alles herauszufinden.

    
user3228876 11.09.2014 19:09
quelle
1

Für diejenigen, die brauchen. Soweit ich mich erinnere, hat die Java Enterprise Edition mit Java EE 5 viele Funktionen, insbesondere im Umgang mit Annotationen und Generika. Aus diesem Grund denke ich, dass die Verwendung von Java 5 Syntax auf Eclipse oder Java 5 Kompatibilität auf Netbeans, wenn die Entitäten mit Hibernate erzeugt werden, sicherstellen wird, dass der generierte Code verwendet wird diese 'neuen Funktionen' von Java 5 zählen.

Weil ich nur 42 als Ruf habe, kann ich nichts dazu sagen !!!

    
levolutionniste 30.06.2016 14:11
quelle
0

Um Java 5 Generics in einem automatisierten Build zu verwenden, können Sie Ihre Argumente ändern, um jdk5 wie folgt zu aktivieren:

%Vor%

Diese Informationen sind hier dokumentiert: Red Hat hbm2java docs .

    
jmh 05.07.2013 14:14
quelle