我对带有路径或表达式的JPA查询条件构建器有疑问。
我想查找在创建帐户后的一个小时内所有输入了第一条评论的人
Path<Date> accountCreatedTime = root.<Date> get("AccountCreatedTime");
Path<Date> firstPostCreatedTime = root.<Date> get("FirstPostCreatedTime");
final Predicate timeInHourPredicate = criteriaBuilder
.greaterThanOrEqualTo(accountCreatedTime, FirstPostCreatedTime);
示例:
帐户创建时间:2018年9月10日上午10点,First Post于2018年10月15日进入2018年9月10日。 (几小时内摔倒)
帐户创建时间:2018年9月10日上午10点,First Post在3.50 pm进入2018年9月10日。不应获取此帐户。
是否可以通过Path accountCreatedTime添加或分离小时数?还是可以获取小时数和criteriaBuilder中的Path accountCreatedTime和Path FirstPostCreatedTime之间的差异
答案 0 :(得分:0)
SQL将如下所示:
select u
from users u
join posts p on p.user_id = u.id
where datediff('hour', u.account_created_time, p.first_post_created_time)
有关如何使用Criteria API注册DATEDIFF
函数的更多详细信息,请查看this article。