2016-10-25 2 views
0

Ich habe @Where @Table Ebene.Hibernate Dynamic @ Where Klausel

Ich brauche Zeilen mit EffDate Feld weniger als das aktuelle Datum zu bekommen.

Ich verstehe @Where nimmt konstanten Ausdruck, der zur Kompilierzeit zur Verfügung gestellt werden muss. Aber ich muss mit dem aktuellen Datum von Java und nicht von der Datenbank vergleichen.

Irgendeine Idee, wie kann ich das tun.

+1

JPA hat keine solche '@ Where' Anmerkung –

+0

Dank @NeilStockton. Der Titel wurde aktualisiert. –

Antwort

0

Sie können die SQL-Funktion/Konstante für die aktuellen Zeitstempel verwenden (auf der Art der Datenbank abhängig es zB genannt werden könnte current_timestamp) (Anmerkung jedoch, dass da dieser einfachen SQL sein wird, wird es den Zeitstempel aus der Datenbank verwenden Server, nicht der Server, auf dem die Java-Anwendung läuft auf:.

@Where(clause="EffDate < current_timestamp") 
+0

Danke für die schnelle Antwort. Ich brauche es von der Java-Anwendung und nicht von der Datenbank. –

0

ein Hibernate filter schreiben und es ist standardmäßig für alle Sitzungen in der Anwendung aktiviert Je nachdem, welche Rahmen Sie für Transaktionsmanagement verwenden, können Sie einen Abfangjäger hinzufügen/Haken, der den Filter aktiviert, wenn Transaktionen gestartet werden