gpt4 book ai didi

java - 如何将 MySQL 的 DATE_ADD 与 JPA 条件一起使用?

转载 作者:行者123 更新时间:2023-12-05 05:00:14 27 4
gpt4 key购买 nike

我需要使用 MySQL 和 JPA Criteria 为日期添加一个时间间隔(两列都在表中)。我知道需要以下功能:

MySQL 的DATE_ADD:

DATE_ADD(date,INTERVAL expr unit)

CriteriaBuilder 的函数:

function(String name, Class<T> type, Expression<?>... args)

我还有一个创建函数表达式的类:

public class SqlFunctionExpression extends BasicFunctionExpression<String> implements Serializable {

public SqlFunctionExpression(CriteriaBuilderImpl criteriaBuilder,
Class<String> javaType,
String functionName) {
super(criteriaBuilder, javaType, functionName);
}

@Override
public String render(RenderingContext renderingContext) {
return getFunctionName();
}
}

可以像 new SqlFunctionExpression(null, String.class, "MINUTE") 那样使用来创建分钟单位。

但是,如何创建表达式 INTERVAL expr unit 其中 expr 是一个表列?

最佳答案

注册函数

    public class CommonMySQLDialect extends MySQL57Dialect {
public CommonMySQLDialect() {
super();
registerFunction("date_add", new SQLFunctionTemplate(TimestampType.INSTANCE, "date_add(?1, INTERVAL ?2 ?3)"));
}
}

添加到 hibernate 配置

    <property name="hibernate.dialect">yourpackage.CommonMySQLDialect</property>

准备使用

    Expression<String> unit = new SqlFunctionExpression(null, String.class, "MINUTE");
Expression<Integer> num = cb.literal(10);
Expression<Date> newDate = cb.function("date_add", Date.class, cb.currentTimestamp(), num, unit);

关于java - 如何将 MySQL 的 DATE_ADD 与 JPA 条件一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63153649/

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