Java JPQL时差查询
我在实体中有两个日期:报告时间和创建时间 如果(创建时间-报告时间)之间的时间差仅为12小时,如何创建JPQL以获取记录 我不想要任何本机查询语法,因为我们同时使用Oracle和Postgres 有人可以在Oracle中查询相同的问题吗 实体Java JPQL时差查询,java,oracle,jpa,jpql,Java,Oracle,Jpa,Jpql,我在实体中有两个日期:报告时间和创建时间 如果(创建时间-报告时间)之间的时间差仅为12小时,如何创建JPQL以获取记录 我不想要任何本机查询语法,因为我们同时使用Oracle和Postgres 有人可以在Oracle中查询相同的问题吗 实体 JPA规范不包含日期/时间差的方法。但是您可以调用函数,这比本机查询要好一点。您必须确保可用 CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery<Inciden
JPA规范不包含日期/时间差的方法。但是您可以调用函数,这比本机查询要好一点。您必须确保可用
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<IncidentHdr> query = cb.createQuery(IncidentHdr.class);
Root<IncidentHdr> root = query.from(IncidentHdr.class);
Predicate max12Hour = cb
.lessThanOrEqualTo(
cb.function("datediff", Long.class, cb.literal("HOUR"), root.get(IncidentHdr_.createdTime),
root.get(IncidentHdr_.reportedTime)),
12L);
query.select(root)
.where(max12Hour);
return entityManager.createQuery(query).getSingleResult();
CriteriaBuilder cb=entityManager.getCriteriaBuilder();
CriteriaQuery=cb.createQuery(IncidentHdr.class);
Root=query.from(IncidentHdr.class);
谓词max12h=cb
lessThanOrEqualTo先生(
cb.function(“datediff”、Long.class、cb.literal(“HOUR”)、root.get(IncidentHdr\uuu.createdTime),
root.get(IncidentHdr_uu.reportedTime)),
12升);
查询。选择(根)
。其中(最大12小时);
返回entityManager.createQuery(query.getSingleResult();
我希望它能帮助您。JPA规范没有包含日期/时间差异的方法。但是您可以调用函数,这比本机查询要好一点。您必须确保可用
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<IncidentHdr> query = cb.createQuery(IncidentHdr.class);
Root<IncidentHdr> root = query.from(IncidentHdr.class);
Predicate max12Hour = cb
.lessThanOrEqualTo(
cb.function("datediff", Long.class, cb.literal("HOUR"), root.get(IncidentHdr_.createdTime),
root.get(IncidentHdr_.reportedTime)),
12L);
query.select(root)
.where(max12Hour);
return entityManager.createQuery(query).getSingleResult();
CriteriaBuilder cb=entityManager.getCriteriaBuilder();
CriteriaQuery=cb.createQuery(IncidentHdr.class);
Root=query.from(IncidentHdr.class);
谓词max12h=cb
lessThanOrEqualTo先生(
cb.function(“datediff”、Long.class、cb.literal(“HOUR”)、root.get(IncidentHdr\uuu.createdTime),
root.get(IncidentHdr_uu.reportedTime)),
12升);
查询。选择(根)
。其中(最大12小时);
返回entityManager.createQuery(query.getSingleResult();
我希望它能帮助您。发布您的实体。@jklee有任何提示吗?发布您的实体。@jklee有任何提示吗?