有没有一种方法可以在不特定于数据库的情况下表示 JPA 中的最大(和最小)可能日期?然后,JPA 实现应该能够根据使用的方言将其转换为正确的值。
如果不是 JPA,Hibernate 特定的解决方案也可以。
编辑
在我们使用的应用程序中,有几个命名查询可以测试日期是否在给定范围内
SELECT ... FROM ... WHERE somedate BETWEEN startdate AND end date
如果范围是开放的(只有开始日期,或只有结束日期),那么使用最大和最小日期来进行不同的查询会更容易,只需一次比较(这需要对现有应用程序进行几处更改,我会喜欢避免)。
编辑2
对于不是真正的问题选民:问题是:
有可能以与数据库无关的方式查询最大可能日期吗?
编辑3
应用程序将日期存储为 java.util.Date
,如下所示
@Temporal( TemporalType.TIMESTAMP )
private java.util.Date someDate;
最佳答案
我相信(目前)还没有这样的功能来以数据库中立的方式获取最大/最小日期。
我建议您根据要使用的 DBMS,在 Java 和 DB 存储函数中定义相应的常量。
因此你可以这样做:
Query query = session.createQuery("from Foo where date between :fromDate and :toDate");
query.setParameter("fromDate", DateConstants.MIN_DATE);
query.setParameter("toDate", DateConstants.MAX_DATE);
(我以前称其为 FOREVER 和 EPOCH :P )
或者甚至有这样的 HQL(如果你在数据库中创建了存储函数)
来自 Foo,其中日期介于 MaxDate() 和 MinDate() 之间
关于java - JPA 中的最大可能日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12775978/