Hibernate HQL可以对日期字段进行减法或求和吗?

Hibernate HQL可以对日期字段进行减法或求和吗?,hibernate,timestamp,hql,Hibernate,Timestamp,Hql,A有两个实体。例如定时设置和顺序 @Entity public class TimingSettings{ @Basic private Long orderTimeout = 18000; //for example 18000 sec .... } @Entity public class Order{ @Basic @OneToOne private TimingSettings timingSettings; @Tempo

A有两个实体。例如定时设置和顺序

@Entity
public class TimingSettings{

    @Basic
    private Long orderTimeout = 18000; //for example 18000 sec
    ....
}


@Entity
public class Order{

    @Basic
    @OneToOne
    private TimingSettings timingSettings;

    @Temporal(value = TemporalType.TIMESTAMP)
    @Column(nullable = false)
    protected Date time;
    ....
}
我不能选择timeout before并计算所需的订单时间,因为我不知道哪些订单有哪些定时设置

我可以执行与以下相同的HQL吗:

select o from order o 
left join o.timingSettings ts
where o.time < current_timestamp()+ ts.orderTimeout
从订单o中选择o
左连接o.TimingTS设置
其中o.time
问题在于算术和时间戳,请检查此项以了解一些想法。

这取决于您是否需要它在所有数据库中工作

在后一种情况下(特定数据库),请检查您的方言是否有可用的日期函数。 例如,MySQL方言支持和函数,允许您将查询编写为:

select o from order o 
  left join o.timingSettings ts
 where time_to_sec(timediff(o.time, current_timestamp())) < ts.orderTimeout
从订单o中选择o
左连接o.TimingTS设置
其中time_至_秒(timediff(o.time,current_timestamp())
如果您需要对所有数据库执行此操作(或者如果您的数据库不支持所需的日期函数),Hibernate支持跨所有方言的函数。使用这些将使您的查询变得相当冗长:-)此外,您还将遇到DST问题