我在@Table级别拥有@Where。
我需要让EffDate字段的行少于当前日期。
@Entity
@Table(name="party")
@Where(clause="EffDate < " + currentdate())
public class Party implements Serializable {
.......
}
我理解@Where采用需要在编译时提供的常量表达式。但我需要与Java的当前日期进行比较,而不是与数据库进行比较。
任何想法我该怎么做。
答案 0 :(得分:0)
您可以将SQL函数/常量用于当前时间戳(取决于它可能被称为数据库的类型,例如current_timestamp
)(但请注意,因为这将是纯SQL,它将使用时间戳来自数据库服务器,而不是运行Java应用程序的服务器:
@Where(clause="EffDate < current_timestamp")
答案 1 :(得分:0)
写一个Hibernate filter并默认为应用程序中的所有会话启用它。根据您用于事务管理的框架,您可以添加一个拦截器/钩子,在启动事务时启用过滤器。
答案 2 :(得分:0)
@Where注释不起作用,因为它接受常量表达式。相反,我使用JPARepository中的findOnByEffectiveDateLessThanEquals。
http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation