ERLEDIGT
NEIN
NEIN
ANTWORTEN
13
13
ZUGRIFFE
1854
1854
EMPFEHLEN
-
27.03.08 10:13 #1Tobias Köhler Tutorials.de Gastzugang
Hallo Leute,
ich versuche grad den Einstieg in Hibernate zu finden. Das wird dadurch erschwert, dass gleich die 2. Zeile nicht klappt
Laut Buch(Spring&Hibernate) muss ich bei der Klasse, um diese als Tabelle speichern zu können die Annotations einfügen:
Code java:1 2
@Entity @Table(name = "Tabellenname") // Definiert einen Namen abweichend vom Klassennamen
nun meckert Eclipse aber an Table und name rum.
The annotation @Table must define the attribute appliesTo
The attribute name is undefined for the annotation type Table
wo liegt das Problem? Organize Imports bringt auch nix.
LG Tobias
-
Guck dir mal deine Imports an, hast du auch wirklich das richtig Table erwischt?
-
27.03.08 10:31 #3Tobias Köhler Tutorials.de Gastzugang
import org.hibernate.annotations.Table;
geh ich mal von aus, dass der richtig ist
-
Laut Doku: http://www.hibernate.org/hib_docs/an...ons/Table.html
Handelt es sich bei appliesTo um den Namen der Tabelle. Also benutz dass doch einfach so.
Ein @Table mit name kommt z.B. in JPA vor: http://www.oracle.com/technology/pro...ons.html#Table
Sollte aber beides funktionieren. JPA ist allgemein eine "Java Persistence API" während Hibernate für Persistenz in eine Datenbank zuständig ist. Willst du also deine Persistenzschicht einfach ändern können, so solltest du die JPA Annotations benutzen, willst du nur mit Hibernate arbeiten, kannst du auch die von Hibernate verwenden.
-
27.03.08 11:02 #5
Was du durcheinander wirfst, sind JPA Annotations und Hibernate Annotations. In JPA hat die Annotation Table die Attribute, wie du sie in deinem Codestück verwendest. Die Hibernate Annotation Table benötigt die Attribute wie in der Fehlermeldung angegeben.
Entweder ist also das Buch nicht sehr genau (könnte bei dem ein oder anderen Verlag durchaus der Fall sein
) oder du hast es einfach verwechselt. Ich würde dir raten auf JPA zu setzen, da du damit weigehend unabhängig von deinem Persistence Provider bleibst und damit (theoretisch) diesen ercht einfach austauschen kannst.
Es sollte reichen, das JPA Jar in den Classpath aufzunehmen und den Import zu korrigieren.
Gruß
Ollie
PS: da war wohl jemand schneller :PIn theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
-
27.03.08 11:33 #6Tobias Köhler Tutorials.de Gastzugang
Oh, danke
Vom Verständnis hat mir das viel gebracht. Aber leider tu ich mich schwer damit, das einzubinden. Bzw das Auffinden der jpa.jar. Wo finde ich die?
-
27.03.08 11:37 #7
Lauf Hibernate Webseite liegen die dem Hibernate Annotations bei. Also die Klassen auf jeden Fall, müssen nicht unbeding in einem Extra JAR liegen.
Gruß
OllieIn theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
-
27.03.08 11:48 #8Tobias Köhler Tutorials.de Gastzugang
Hm, das ist dann aber schon eigenartig. Denn die Annotations habe ich ja eingebunden.
-
27.03.08 12:16 #9
Was heißt "hab ich eingebunden"? Als Maven Dependency deklariert? Als User Library in Eclipse? Welche Jars aus dem Download?
REINHAUN!In theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
-
27.03.08 12:23 #10Tobias Köhler Tutorials.de Gastzugang
Maven Dependency--> sagt mir nix
Im BuildPath habe ich hibernate3.jar, hibernate-annotations.jar, ejb3-persistence, cglib-2.1.3.jar, antlr-2.7.6.jar, asm.jar und jta.jar, die Logging-Sachen lasse ich jetzt mal weg
-
27.03.08 13:00 #11
Dann solltest du in ejb3-persistence.jar eine Annotation javax.persistenceTable finden...
Gruß
OllieIn theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
-
27.03.08 13:11 #12Tobias Köhler Tutorials.de Gastzugang
Danke
jetzt ist alles klar...vorerst auf jeden Fall
-
27.03.08 15:01 #13Tobias Köhler Tutorials.de Gastzugang
So, mit den Annotations klappt jetzt alles. Nun möchte ich zum ersten Mal Daten speichern. Um mein Problem zu beschreiben muss ich allerdings etwas ausholen.
Vereinfacht gesagt habe ich 2 Klassen(Class und Article). Zwischen diesen gibt es eine 1:N-Beziehung(Class kann mehrere Article haben, Article jeweils nur eine Class). Folglich muss nun in der Article-Tabelle ein Fremdschlüssel sein oder, wie ich jetzt in Hibernate weiß, folgender Code:
Um zu sichern, dass die Daten konsistent bleiben, benutze ich Transaktionen. Hier liegt das Problem: Wie kann ich einem Article nun eine Class zuweisen, wenn ich dies aber in getrennten Transaktionen laufen lasse. Code zum verdeutlichen:Code java:1 2 3 4 5 6
@ManyToOne(optional = false) @JoinColumn(name = "class_id") public ErpClass getErpClass() { return erpClass; }
Ich hoffe, ich habe mein Problem verständlich beschriebenCode java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Transaction transaction = session.beginTransaction(); try { ErpClass erpClass = new ErpClass(); erpClass.setName("FD"); transaction.commit(); } catch(Exception e){transaction.rollback();System.out.println(e);} finally{session.close();} transaction = session.beginTransaction(); try { Article article = new Article(); article.setErpClass(.......) // wie soll ich das hier machen? transaction.commit(); } catch(Exception e){transaction.rollback();System.out.println(e);} finally{session.close();}
LG Tobias
-
27.03.08 15:46 #14
Die elegante Variante wäre auf JPA zu setzen und den ganzen Session Kram sein zu lassen. Grundsätzlich musst du entweder die ErpClass nochmal laden (byPrimaryKey) oder diese halt in die neue Transaktion mergen (mit JPA: em.merge(erpClass)).
Grundsätzlich solltest du dir den Gefallen tun und Hibernate hinter JPA benutzen. Von deinen 19 Zeilen Code oben sind eigentlich nur 6 fachlich relevant. Warum so viel technischen Code schreiben, wenn dir das wer abnehmen kann.
Gruß
OllieIn theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
Ähnliche Themen
-
Hibernate-Annotations-Problem
Von 7bkahnt im Forum JavaAntworten: 2Letzter Beitrag: 23.04.10, 13:43 -
Hibernate Annotations: Filtern OneToMany Beziehung
Von Sentoo im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 1Letzter Beitrag: 24.08.09, 15:09 -
[Hibernate] Problem mit Annotations
Von AndreBrueck im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 28.06.09, 22:01 -
Spring2 + Hibernate + Annotations + Service + DAO > insert ?
Von Nobody im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 8Letzter Beitrag: 15.05.09, 12:00 -
Hibernate Annotations
Von drezze im Forum JavaAntworten: 0Letzter Beitrag: 28.11.08, 08:36





Zitieren

Login




