-->
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: Update von Datensätzen?
PostPosted: Mon Sep 26, 2005 5:34 pm 
Regular
Regular

Joined: Sat Sep 03, 2005 9:07 am
Posts: 87
Location: Graz, AUSTRIA
Hab mal eine allgemeine Frage bezüglich eines Update-Statements in Hibernate.

Wie erkenne ich in Hibernate am besten, ob es einen bestimmten Eintrag schon gibt?

Bei mir in der Applikation ist es grundsätzlich so (JSF-Page), dass ich, nachdem der User in ein bestimmtes InputText-feld etwas eingegeben hat, einen ValueChangeListener starte und mit Hilfe der Eingabe einen Eintrag aus der Datenbank lese und die Resultwerte in weitere Inputtextfelder der JSF-Page schreibe (falls etwas vorhanden ist).
Der User kann die anderen Inputfelder jetzt noch ändern und speichert schließlich den Datensatz ab.
Nun soll natürlich kein Neuer Datensatz entstehen, sondern der alte nur upgedatet werden.

WIe mache ich das?

Soll ich beim Auslesen der Werte die ID in ein Hidden Feld schreiben und danach

Code:
Bean mybean = session.get(bean.class, mybeanId)
if(mybean!=null)
{
mybean.setAnything(foo)
...
}else
{
Bean mybean = new Bean()
mybean.setAnything
...
}

so die Abfrage gestalten, wobei mybeanId die ID aus dem Hidden Feld ist?

Oder gibts eine andere Möglichkeit?


thx!


Top
 Profile  
 
 Post subject:
PostPosted: Tue Sep 27, 2005 5:54 am 
Beginner
Beginner

Joined: Wed Apr 13, 2005 10:34 am
Posts: 38
Probier es mal mit Session.saveOrUpdate(). Dann kümmert sich Hibernate darum, ob ein INSERT oder UPDATE notwendig ist.

Gruß,

Heiko


Top
 Profile  
 
 Post subject:
PostPosted: Tue Sep 27, 2005 5:58 am 
Regular
Regular

Joined: Sat Sep 03, 2005 9:07 am
Posts: 87
Location: Graz, AUSTRIA
Ich hab folgendes gefunden:
The saveOrUpdate(Object) call will save the object if the id property is null, issuing a SQL INSERT to the database. This refers to the unsaved-value attribute that we defined in the Player mapping document. If the id is not null, the saveOrUpdate(Object) call would issue an update, and a SQL UPDATE would be issued to the database.

Wie weiß nun Hibernate, dass es schon eine ID gibt? Muss ich ihm das nicht irgendwie sagen?

Aber ich werd das mal ausprobieren.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Sep 27, 2005 6:03 am 
Beginner
Beginner

Joined: Wed Apr 13, 2005 10:34 am
Posts: 38
"Normalerweise" wird die ID beim Insert durch Hibernate gesetzt. Das per new erzeugte Objekt sollte noch keine Id (null) oder den Wert, der im Mapping als "unsaved-value" definiert ist, haben.


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.