gpt4 book ai didi

java - 在 JPA Criteria Builder 中按 Oracle 函数排序

转载 作者:行者123 更新时间:2023-11-30 08:55:31 24 4
gpt4 key购买 nike

我有以下SQL

SELECT ID,LASTTIMEEXECUTEDDATE as d FROM STATISTICSDATE ORDER BY LASTTIMEEXECUTEDDATE

使用 CriteriaBuilder 效果很好:

    CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<StatisticsDate> cq = cb.createQuery(StatisticsDate.class);
Root<StatisticsDate> rootEntry = cq.from(StatisticsDate.class);
CriteriaQuery<StatisticsDate> all = cq.select(rootEntry).orderBy(cb.desc(
rootEntry.get("lastTimeExecutedDate")));
TypedQuery<StatisticsDate> allQuery = em.createQuery(all);

但是现在我需要使用这个获得更准确的结果:

SELECT ID,LASTTIMEEXECUTEDDATE as d FROM STATISTICSDATE ORDER BY 
to_timestamp(LASTTIMEEXECUTEDDATE, 'DD.MM.YYYY:HH24:MI:SS') desc;

我可以通过 native sql 执行此操作,但我想知道是否可以通过 CriteriaBuilder 使用它。

让我烦恼的是 to_timestamp(LASTTIMEEXECUTEDDATE, 'DD.MM.YYYY:HH24:MI:SS')

谢谢

最佳答案

像这样尝试:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<StatisticsDate> cq = cb.createQuery(StatisticsDate.class);
Root<StatisticsDate> rootEntry = cq.from(StatisticsDate.class);
CriteriaQuery<StatisticsDate> all = cq.select(rootEntry).orderBy(cb.desc(
cb.function(
"to_timestamp", Timestamp.class,
rootEntry.get("lastTimeExecutedDate"),
cb.literal("DD.MM.YYYY:HH24:MI:SS")
)
));

TypedQuery<StatisticsDate> allQuery = em.createQuery(all);

关于java - 在 JPA Criteria Builder 中按 Oracle 函数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28961031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com