我在@table级别上使用了@where语句。
我需要获取EffDate字段小于当前日期的行。
@Entity
@Table(name="party")
@Where(clause="EffDate < " + currentdate())
public class Party implements Serializable {
.......
}
我了解@Where需要在编译时提供常量表达式。但是我需要从Java而不是数据库中比较当前日期。你有什么想法吗?
我在@table级别上使用了@where语句。
我需要获取EffDate字段小于当前日期的行。
@Entity
@Table(name="party")
@Where(clause="EffDate < " + currentdate())
public class Party implements Serializable {
.......
}
@Where注解不能使用,因为它只接受常量表达式。相反,我使用JPARepository中的findOnByEffectiveDateLessThanEquals方法。
http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation
您可以使用SQL函数/常量来获取当前时间戳(根据数据库类型,它可能被称为current_timestamp
)(请注意,由于这将是纯SQL,它将使用数据库服务器的时间戳,而不是Java应用程序运行的服务器的时间戳:
@Where(clause="EffDate < current_timestamp")
@Where
注解。 - Neil Stockton