gpt4 book ai didi

java - Spring Criteria 查询数学运算

转载 作者:行者123 更新时间:2023-11-29 18:13:46 25 4
gpt4 key购买 nike

我有一个如下所示的查询。我们有一个模块,可以接收用户的请求并将其存储在report_request 表中,并附上收到请求的日期。我们会将该请求在表中保留 30 天,然后再将其删除。我们有调度程序,每小时运行一次,检查今天是否有任何过期的请求,如果是,则从表中删除该记录。

基本上,我试图获取两个时间戳之间的天数(current_timestamp 和报告请求时间戳)。如果没有 30 天或更多,我必须删除该记录。

select round((1510184973334-1484905416098)/(24 * 60 * 60 * 1000));

我正在尝试将其转换为谓词,因此我可以使用 Spring Repository 来执行此查询。

criteriaBuilder.greaterThan(criteriaBuilder.quot(criteriaBuilder.diff(System.currentTimeMillis(), join.get(Table_.endTime)), new Long(86400000)),
new Long(1))

此处 criteriaBuilder.quot 返回的表达式在 criteriaBuilder.greaterThan 方法中 Not Acceptable 。

请求每个人查看此代码片段并分享您的意见。如果您需要任何其他相关信息,请告诉我。或者也让我知道是否有更好的方法来实现这个用例。

问候。

最佳答案

您可以在案例中运行 native SQL 或使用 Hibernate @Formula(请参阅 the example )在实体中引入该字段。然后该字段就可以在您的表达式中使用。

@Formula(value = “round((now()-end_time)/(24 * 60 * 60 * 1000))”)
private int days;

关于java - Spring Criteria 查询数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47195654/

25 4 0
文章推荐: javascript - 你如何评估 Javascript 中固有的对象方法并用 Big-O 表达它?
文章推荐: Android:为什么不尊重 setPadding?
文章推荐: javascript - 在 之前的多个元素之前搜索