【问题标题】:How to calculate age with JPA 2 criteria queries?如何使用 JPA 2 标准查询计算年龄?
【发布时间】:2011-10-10 15:24:21
【问题描述】:

我很惊讶在这个主题上找不到任何东西:

我如何计算一个人在给定日期的年龄,基于 出生日期并仅使用常规 JPA 标准查询?

有很多原生 SQL 解决方案,但我找不到一个简单而优雅的与供应商无关的标准。

干杯!

【问题讨论】:

  • 我没有对这个问题进行过深入研究,但在大多数情况下,可以通过从数据库中获取出生日期并用 Java 计算年龄来规避。

标签: java jpa-2.0 criteria-api


【解决方案1】:

JPA 2.0 中没有日期操作数的算术运算。此外,JP QL 中现有的三个与日期相关的函数(CURRENT_DATE、CURRENT_TIME、CURRENT_TIMESTAMP)和 Criteria API 中的相应方法(currentDate()、currentTime()、currentTimestamp())与计算无关。这使得无法使用日期执行计算。正如 JB Nizet 所说,只需用 Java 计算即可。

【讨论】:

  • 感谢您的回答!为了澄清,我正在尝试从数据库创建临时统计信息。聚合和分组等:10k+ 人的年龄分布是什么?当然,在 Java 中这样做是可能且容易的,但恐怕不是很快。
  • 您可以使用 CriteriaBuilder.function 方法(如果存在合适的数据库函数),但它当然不会与数据库无关。
  • 这就是我现在正在做的,但正如你所说,它只能在单个数据库中工作。感谢您的回答,虽然它有点令人失望。 :-(
猜你喜欢
  • 2021-10-31
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多