java - JPA 中的最大可能日期

标签 java database hibernate date jpa

有没有一种方法可以在不特定于数据库的情况下表示 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/

相关文章:

java - 按第一个字符对单词进行分组

java - 无法打印在类构造函数中初始化的 arrayOfInt

java: 在源组件之外释放鼠标时结束 mouseDragged

php - 哪个是共享数据库数据的最佳可行解决方案?

sql - POSTGRES SQL 查询查找所有具有一列的行包含格式为 11 位数字 - 4 位数字的数字

mysql - 具有多个表的高级 MySQL 插入

java - 如何删除包含可为空字段的 Hibernate @Embeddables?

java - 如何获取复选框偏好值?

mysql - 如何在 Spring JSF MySQL 应用程序中正确显示阿拉伯语?

java - PersistenceContext EntityManager 注入(inject) NullPointerException