Hibernate动态@Where子句

3

我在@table级别上使用了@where语句。

我需要获取EffDate字段小于当前日期的行。

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

我了解@Where需要在编译时提供常量表达式。但是我需要从Java而不是数据库中比较当前日期。你有什么想法吗?

1
JPA没有@Where注解。 - Neil Stockton
谢谢@NeilStockton。标题已更新。 - Gurmeet Gulati
3个回答

0
编写一个 Hibernate 过滤器,并默认为应用中的所有会话启用它。根据您用于事务管理的框架,您可以添加一个拦截器/钩子,在启动事务时启用过滤器。

0

0

您可以使用SQL函数/常量来获取当前时间戳(根据数据库类型,它可能被称为current_timestamp)(请注意,由于这将是纯SQL,它将使用数据库服务器的时间戳,而不是Java应用程序运行的服务器的时间戳:

@Where(clause="EffDate < current_timestamp") 

感谢您的快速回复。我需要从Java应用程序中获取,而不是从数据库中获取。 - Gurmeet Gulati

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接