-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: object references an unsaved transient instance?
PostPosted: Tue Dec 04, 2007 5:17 am 
Newbie

Joined: Thu Aug 30, 2007 10:03 am
Posts: 8
Hi,

ich habe folgendes Problem:

Ich habe zwei Tabellen, zum einen Patient und zum anderen Client, welche über 2 many-to-one Beziehungen miteinander verbunden sind.


Code:
@SuppressWarnings("serial")
@Entity
@Table(name = "patient_data")
public class Patient_data {

   private int _patient_id;
   private String _name;
   private String _firstname;
   private String _location;
   private String _street;
   private Date _date_of_birth;
   private String _gender;
   private float _weight;
   private float _bodysize;
   
// Objects for interpreter, assigner
   private Client _interpreter;
   private Client _assigner;
   
//    Getter/Setter patient_id -> PK
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
   public int getPatient_id(){
      return _patient_id;
   }

   public void setPatient_id(int patient_id){
      _patient_id = patient_id;
   }

//    Getter/Setter interpreter -> FK
   @ManyToOne
   @JoinColumn(name="interpreter")
   public Client getInterpreter(){
      return _interpreter;
   }

   public void setInterpreter(Client interpreter){
      _interpreter = interpreter;
   }   
   
//    Getter/Setter assigner -> FK
   @ManyToOne
   @JoinColumn(name="assigner")
   public Client getAssigner(){
      return _assigner;
   }

   public void setAssigner(Client assigner){
      _assigner = assigner;
   }   
      
   ....

   }      


Nun bekomme ich beim anlegen eines neuen Patienten immer folgende Fehlermeldung:


Quote:
org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: de.webzw.domain.Client; nested exception is org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: de.webzw.domain.Client



Egal, wie ich es drehe und wende, ich bekomme immer diesen Fehler.
Hat jemand Erfahrung mit einem ähnlichen Fehler, bzw. weiß jemand einen Rat?

Danke

Tony


Top
 Profile  
 
 Post subject:
PostPosted: Tue Dec 04, 2007 8:15 am 
Beginner
Beginner

Joined: Tue Nov 27, 2007 9:44 am
Posts: 46
Hi,

Ich nehma an, Du hast den Client noch nicht persistent gemacht, zu dem Zeitpunkt, an dem Du den Patienten speichern willst.

z.B.:
Code:

//Initialisierung ...

Patient p = new Patient();

// setze Properties von Patient
...

p.setAssigner(new Client());

em.persist(p);
/**
* Problem, da Client noch nicht persistent ist. Hibernate weiß nicht,
* welchen Foreign Key es im Patienten-Satz setzen soll
*/


Also, erst den Client speichern und dann den Patient. Oder die ManyToOne Verknüpfung mit dem entsprechenden CascadeType versehen.

Falls es daran nicht liegt, wäre Dein Code an dieser Stelle noch interessant.

Wozu hast Du eigentlich die @JoinColumn Annotationen drin? Die dürften eigentlich nix bringen, da sie eh nur den default abbilden.


Gruß,
Frank


Top
 Profile  
 
 Post subject:
PostPosted: Tue Dec 04, 2007 9:08 am 
Newbie

Joined: Thu Aug 30, 2007 10:03 am
Posts: 8
Hi Frank,

dank deines Denkanstosses hab ich wohl den Fehler gefunden, manchmal sieht mal den Wald vor lauter Bäumen nicht mehr.

Kurz zur Erklärung.

Der Client für den Interpreter war schon persistent, der für den Assigner natürlich nicht, da noch nicht vorhanden, hab jetzt den Assigner auf null gesetzt, womit es funktioniert.

Danke & Gruss

Tony


Top
 Profile  
 
 Post subject:
PostPosted: Thu Aug 21, 2008 9:12 am 
Newbie

Joined: Fri Aug 15, 2008 7:18 am
Posts: 5
can be deleted


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.