2012-04-12 20 views
1

Ich habe eine zugeordnete Klasse, die eine Date-Eigenschaft hat. Ich möchte Objekte der Klasse SaveOrUpdate so speichern, dass bereits existierende nur dann aktualisiert wird, wenn sie älter als die gespeicherte ist.Bedingte saveOrUpdate im Ruhezustand

Wie würde ich das tun (sauber und effizient, wenn möglich)?

Ich habe viele Klassen wie diese, so dass ich hoffe zu vermeiden, Tonnen von benutzerdefinierten HQL für alle von ihnen zu schreiben.

Antwort

0

versuchen Sie es mit HibernateTemplate.saveOrUpdate von Spring. es hat die gleiche Funktionalität wie erforderlich.bieng Open Source Sie können den Code auch für die Implementierung sehen

+0

Ging anders herum, aber ich denke, das sah vielversprechend aus. – Bloodboiler

0

Nicht sicher, wie dies in Java erreicht wird, aber ich bin sicher, dass Sie etwas Ähnliches tun können.

FYI, unter Klassen sind NHibernate spezifische

Sie die DefaultSaveOrUpdateEventListener Klasse erweitern und außer Kraft setzen, die PerformSaveOrUpdate Methode, in diesem Verfahren Sie benutzerdefinierten Code schreiben können, die Sie identifizieren Klassen mit Datum Eigenschaften in ihnen helfen, (haben eine abstrakte Klasse/Schnittstelle, die alle diese Klassen implementieren müssen) und legen Sie den Wert dieser Eigenschaft und rufen Sie dann die Basis SaveOrUpdate Methode.

Dann fügen Sie diesen Listener beim Erstellen der Configuration hinzu. Informationen dazu finden Sie in den Hibernate-Dokumenten.

Hoffe das hilft dir.