2016-03-29 4 views
1

Ich bin neu im Ruhezustand. Ich verwende SesssionFactory die Sitzung der Transaktion zu erhalten, und eine Möglichkeit, die ich gefunden, nachdem die Suche nach Einstellung einiger Felder verwendet wird, mit eingestellten Parametern d.hWie kann ich eine Zeile basierend auf ID im Ruhezustand aktualisieren

Query query = getCurrentSession().createSQLQuery(
    "UPDATE table_name set field1=:f1 where ID=:id"); 

query.setParameter("f1", f1); 
query.setParameter("id", id); 

aber ich mag die ganze Zeile aktualisieren. Ich habe bereits die Werte in der Entitätsklasse festgelegt, aber gibt es eine Möglichkeit, die Werte der gesamten Entitätsklasse basierend auf der ID an die Datenbank zu übergeben. Die ID ist der Primärschlüssel für die Tabelle, die ich aktualisieren möchte.

Antwort

3

Sie haben bereits alle Daten im Hibernate-Entitätsobjekt? Dann rufen Sie einfach direkt in die Sitzung:

getCurrentSession().save(myEntity); 

ein neues Objekt zu erstellen, oder

getCurrentSession().update(myEntity); 

eine bestehende Zeile zu aktualisieren.

Wenn nicht sicher, können Sie verwenden:

getCurrentSession().saveOrUpdate(myEntity); 
+0

AFAIK, wenn Sie das Objekt aus der Datenbank erhalten haben, werden alle Änderungen automatisch gespeichert, wenn die Sitzung beendet wird, dh es ist nicht notwendig, 'getCurrentSession(). Update (myEntity);' –

+0

zu überprüfen Diese Zeile wird in der Tabelle basierend auf der ID – Sunny

0

Werfen Sie einen Blick auf Session#update (oder saveOrUpdate). Dadurch können Sie ein vollständiges zugeordnetes Objekt in der Datenbank beibehalten.

+0

aktualisiert, überprüft dann aber die Kriterien, die diese Zeile in der Tabelle basierend auf der ID – Sunny

+0

aktualisieren. Beim Aufrufen von 'session.update (entity) 'wird eine SQL-Anweisung in der Zeile' UPDATE table 'ausgegeben SET Feld1 =: Feld1Wert, ... WHERE ID =: ID'. Wenn Sie also 'Prüfkriterien' verwenden, meinen Sie Filter nach der Datensatzkennung. dann ja. – PA001

0

Um so OO wie möglich zu sein, können Sie Entity für session.get (entityClass, id); Und dann nach dem Ändern von Objekt durch Setter/Getters, können Sie es wieder in der DB mit update-Methode speichern: session.update (entity);

Verwandte Themen