如何在querydsl中使用mysql now()函数?

时间:2016-07-27 10:43:14

标签: mysql querydsl

假设我有一个mySQL表工件,如下所示:

  

artifact_id varchar(50)
  locked_status char(1)
  valid_till日期时间

 Select artifact_id from artifact where locked_status='Y'

对于上面的查询,我将querydsl表示为:

SQLTemplates templates = new MySQLTemplates();
Configuration configuration = new Configuration(templates);
QArtifact artifact = new QArtifact("a");
SQLQuery<?> query = new SQLQuery<Void>(con, templates);
List<String> artifactIds = query.select(artifact.artifact_id)
            .from(artifact)
            .where(artifact.locked_status.eq("Y"))
            .fetch();

如何在querydsl中表示以下查询?

Select artifact_id from artifact where locked_status='Y' and valid_till > now()

1 个答案:

答案 0 :(得分:1)

最简单的方法是添加

.and(artifact.valid_till.after(new Date()))

但是,如果您对服务器上要调用的NOW函数感到挑剔,那么您可以使用它:

.and(artifact.valid_till.after(Expressions.currentTimestamp()))

您可以浏览代码以查看此助手返回的DateTimeExpression是如何生成的。