2016-10-25 10 views
0

У меня есть @Where на уровне @Table.Hibernate Dynamic @Where clause

Мне нужно получить строки с полем EffDate меньше текущей даты.

@Entity 
@Table(name="party") 
@Where(clause="EffDate < " + currentdate()) 
public class Party implements Serializable { 
....... 
} 

Я понимаю, @Where принимает постоянное выражение, которое необходимо предоставить во время компиляции. Но мне нужно сравнить текущую дату с Java, а не с базой данных.

Любая идея, как я могу это сделать.

+1

JPA не имеет такого '@ Where' аннотации –

+0

Спасибо @NeilStockton. Обновлено название. –

ответ

0

Вы можете использовать функцию SQL/константу для текущей временной метки (в зависимости от типа базы данных, которую она может называть, например, current_timestamp) (обратите внимание, что, поскольку это будет простой SQL, он будет использовать временную метку из базы данных сервер, а не сервер, где приложение Java работает на:.

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

Спасибо за быстрый ответ. Мне нужно это из приложения Java, а не из базы данных. –

0

Написать Hibernate filter и включить его по умолчанию для всех сеансов в приложении в зависимости от основы используется для управления транзакциями, вы можете добавить перехватчик/крюк, который позволяет фильтру при запуске транзакций.