ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
1974
1974
EMPFEHLEN
-
Hallo,
ich habe zwei Tabellen die miteinander verknüpft sind.
Besitzer ----> Adresse
Folgende Relationen habe ich in die XML Dateien geschrieben:
Address.hbm.xml
Code :1 2 3 4 5 6 7
<id name="idAddress" column="idAddress"> <generator class="increment"/> </id> <property name="street" column="Street" type="string"/> ... ... <one-to-one name="owner" class="cr.dipl.datapool.bean.Owner"/>
Owner.hbm.xml
Code :1 2 3 4 5 6
<id name="idOwner" column="idOwner"> <generator class="increment"/> </id> ... ... <one-to-one name="address" class="cr.dipl.datapool.bean.Address"/>
Wenn ich nun einen neuen Benutzer hinzufüge, dann will ich auch automatisch die Adresse für den Benutzer einfügen, siehe Beispiel:
Beispiel:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Address address = new Address(); address.setCity("Berlin"); address.setCityCode(10245); address.setCountry("Berlin"); address.setStreet("Simon-Dach-Strasse"); address.setHouseNumber("77"); Owner owner = new Owner(); owner.setSalutation("Herr"); owner.setFirstName("testStefan"); owner.setSecondName("testMeyer"); owner.setFirmName("Luftland"); owner.setAddress(address); session.save(owner);
Dies funktioniert aber leider nicht, wie geht denn das?
Danke<Tsk> oiuyniyu98h987h89yh87y98yjn987j987y897yhkiuk;''''
<Tsk> sorry.. there was a spider on my keyboard.
-
22.05.09 16:44 #2
Du musst auf der one-to-one Beziehung noch einen CascadeType definieren. Persist und Merge sollte definiert seinen, damit die Referenz bei einem Insert bzw. Update mit angelegt wird.
Gruß
OllieIn theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
-
Bei einem Cascade-All erhalte ich folgende Exception:
Code :1 2 3 4
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`TrackJack/Owner`, CONSTRAINT `fk_Owner_Address` FOREIGN KEY (`Address_idAddress`) REFERENCES `Address` (`idAddress`) ON DELETE CASCADE ON UPDATE CASCADE)
<Tsk> oiuyniyu98h987h89yh87y98yjn987j987y897yhkiuk;''''
<Tsk> sorry.. there was a spider on my keyboard.
-
24.05.09 21:48 #4
Von cascade all war ja auch keine rede... Bei welcher operation fliegt die exception?
In theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
-
Hast Du nicht ein kurzes Beispiel, vllt. einen Link zu einem Tutorial?
Z.Z. erhalte ich nämlich folgenden Fehler:
Code :1 2
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: cr.dipl.datapool.bean.Address
<Tsk> oiuyniyu98h987h89yh87y98yjn987j987y897yhkiuk;''''
<Tsk> sorry.. there was a spider on my keyboard.
-
Hi, also es kommt darauf an ob du es in den Test laufen lässt oder in der Anwendung selber!
In Tests hast du oft ein Session flush problem!
Der Fehler, zumindest der erste entsteht, weil die Adresse ja noch nicht in der Datenbank ist!
Hier mal en Auszug aus meinen Test:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13
Job jobTemp = new Job(); Job jobTemp = new Job(); jobTemp.setJobname("Tollwood"); jobTemp.setCustomer(customer1); jobTemp.setState(JobState.NEW); Promoter promoterTemp = new Promoter(); promoterTemp.setPassword("huhu"); promoterTemp.setUsername("hans"); promoterTemp.setPromotername("Hansibert"); jobTemp.getPromoters().add(promoterTemp); SessionFactoryUtils.getSession(sessionFactory, false).flush(); int restId = jobDAO.save(jobTemp);
oder speicher mal die Adresse nach der erzeugung, dann weiss sie zu und speicher nochmal deine Person!
Ansonsten brav auf Ollihören und dir nochmal das mit dem Cascade anschauen.
Ist es wichtig das alles sofort nachgeladen wird, oder reicht es bei Benötigung, dann wäre das eben mim flush zu testen!
Viel Erfolg!Geändert von Oliver Gierke (29.05.09 um 06:45 Uhr) Grund: Code tags
Ähnliche Themen
-
Spring2 + Hibernate + Annotations + Service + DAO > insert ?
Von Nobody im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 8Letzter Beitrag: 15.05.09, 12:00 -
Insert und Update bei mehreren Tabellen
Von Big Iron im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 03.02.09, 05:48 -
Hibernate - Datum Insert
Von y0dA im Forum JavaAntworten: 3Letzter Beitrag: 19.06.07, 10:12 -
Hibernate - Exception bei insert
Von y0dA im Forum JavaAntworten: 33Letzter Beitrag: 29.05.07, 12:40 -
Insert und/oder Update
Von RedDevilGT im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 06.04.06, 08:45





Zitieren
Login





