Java 如何使用JPA 2标准查询计算年龄?

Java 如何使用JPA 2标准查询计算年龄?,java,jpa-2.0,criteria-api,Java,Jpa 2.0,Criteria Api,我很惊讶在这个话题上找不到任何东西: 我如何计算一个人在给定日期的年龄,基于 出生日期和仅使用常规JPA标准查询 有很多本机SQL解决方案,但我找不到一个简单而优雅的供应商不可知标准 干杯 在JPA2.0中,日期操作数没有算术运算。此外,JP QL中现有的三个与日期相关的函数(CURRENT_date、CURRENT_TIME、CURRENT_TIMESTAMP)以及Criteria API中的相应方法(currentDate()、currentTime()、currentTimestamp()

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

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

有很多本机SQL解决方案,但我找不到一个简单而优雅的供应商不可知标准


干杯

在JPA2.0中,日期操作数没有算术运算。此外,JP QL中现有的三个与日期相关的函数(CURRENT_date、CURRENT_TIME、CURRENT_TIMESTAMP)以及Criteria API中的相应方法(currentDate()、currentTime()、currentTimestamp())与计算无关。这使得无法使用日期进行计算。正如JB Nizet所说,用Java计算即可。

在JPA2.0中,日期操作数没有算术运算。此外,JP QL中现有的三个与日期相关的函数(CURRENT_date、CURRENT_TIME、CURRENT_TIMESTAMP)以及Criteria API中的相应方法(currentDate()、currentTime()、currentTimestamp())与计算无关。这使得无法使用日期进行计算。正如JB Nizet所说,用Java计算即可。

我没有对这个问题进行过很多调查,但在大多数情况下,只要从数据库中获取出生日期并用Java计算年龄就可以解决这个问题。我没有对这个问题进行过很多调查,但在大多数情况下,这可以通过从数据库中获取出生日期并用Java计算年龄来避免。谢谢你的回答!为了澄清这一点,我试图从数据库中创建临时统计数据。聚合和分组等:10000+人的年龄分布是什么?当然,在Java中这样做是可能的,也很简单,但恐怕不是很快。您可以使用CriteriaBuilder.function方法(如果存在合适的数据库函数),但它当然不会与数据库无关。这就是我现在正在做的,但正如您所说,它只在单个数据库中工作。谢谢你的回答,虽然有点令人失望-(感谢您的回答!为了澄清,我正在尝试从数据库中创建临时统计数据。聚合和分组等:10000多人的年龄分布是什么?当然,在Java中这样做是可能和容易的,但恐怕不是很快。您可以使用CriteriaBuilder.function方法(如果存在合适的数据库功能),但它当然不会与数据库无关。这就是我现在正在做的,但正如您所说,它只能在单个数据库中工作。不过,感谢您的回答,尽管这有点令人失望-(