Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPQL时差查询_Java_Oracle_Jpa_Jpql - Fatal编程技术网

Java JPQL时差查询

Java JPQL时差查询,java,oracle,jpa,jpql,Java,Oracle,Jpa,Jpql,我在实体中有两个日期:报告时间和创建时间 如果(创建时间-报告时间)之间的时间差仅为12小时,如何创建JPQL以获取记录 我不想要任何本机查询语法,因为我们同时使用Oracle和Postgres 有人可以在Oracle中查询相同的问题吗 实体 JPA规范不包含日期/时间差的方法。但是您可以调用函数,这比本机查询要好一点。您必须确保可用 CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery<Inciden

我在实体中有两个日期:报告时间和创建时间

如果(创建时间-报告时间)之间的时间差仅为12小时,如何创建JPQL以获取记录

我不想要任何本机查询语法,因为我们同时使用Oracle和Postgres

有人可以在Oracle中查询相同的问题吗

实体
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有任何提示吗?