gpt4 book ai didi

java - CRITERIA API 获取超过 5 天的记录

转载 作者:搜寻专家 更新时间:2023-11-01 03:05:58 25 4
gpt4 key购买 nike

我在 CRITERIA API 中有一个查询,如下所示:

CriteriaQuery<Application> query = builder.get().createQuery(Application.class).distinct(true);
Root<Application> root = query.from(Application.class);
root.join(Application_.answerSets).get(AnswerSet_.createDate);

我想获取记录,其中 createDate 早于 5 天。我不知道如何实现这一目标。我对 CRITERIA API 非常不满意,但我正在从事的项目正在使用它,所以到目前为止我遇到了麻烦。

最佳答案

以下代码是对@Rembo 建议的说明。请注意,关键在于方法“.where(...)”的使用

public List<Application> getOlderThanNDays( int days )
{
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Application> cq = cb.createQuery( Application.class );
Root<Application> root = cq.from( Application.class );

long today = System.currentTimeMillis();
long nDays = days * 24 * 60 * 60 * 1000;
long nDaysAgo = today - nDays;
Date nDaysAgoDate = new Date( nDaysAgo );

// Is here the response to your question?
cq.where( cb.lessThanOrEqualTo( root.get(Application_.date), nDaysAgoDate ) );

TypedQuery<Application> q = entityManager.createQuery( cq );

List<Application> list = q.getResultList();
return list;
}

我假设您正在类 Application_.java 中使用 @StaticMetamodel 注释,并且日期类型是 java.sql.Date。

关于java - CRITERIA API 获取超过 5 天的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22227882/

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