一尘不染

在休眠状态下调用mysql函数返回varchar

mysql

我正在尝试find_in_set在hibernate状态下使用mysql 字符串函数,但不幸的是我无法使用它,甚至无法通过创建这些注册函数来尝试

registerFunction("findInSet",newSQLFunctionTemplate(Hibernate.STRING,"FIND_IN_SET(?1,?2)"));
registerFunction("findInSet",newSQLFunctionTemplate(Hibernate.INTEGER,"FIND_IN_SET(?1,?2)"));
registerFunction("findInSet",new StandardSQLFunction("find_in_set", Hibernate.INTEGER));

使用mysqldialect但没有人在工作..任何人都可以告诉我如何在hibernate状态下使用mysql字符串函数。或对上述寄存器功能的任何更改。

提前致谢,

最好的问候,拉贾。


阅读 340

收藏
2020-05-17

共1个答案

一尘不染

通过扩展mysqldialect来创建一个类,如下所示

public class MySqlDialectExtended extends MySQLDialect {

public MySqlDialectExtended() {
    super();
    registerFunction("date_add_interval", new SQLFunctionTemplate(Hibernate.DATE, "date_add(?1, INTERVAL ?2 ?3)"));
    registerFunction("date_sub_interval", new SQLFunctionTemplate(Hibernate.DATE, "DATE_SUB(?1, INTERVAL ?2 ?3)"));
    registerFunction("weekofyear", new StandardSQLFunction("weekofyear", Hibernate.INTEGER));
    registerFunction("group_concat", new StandardSQLFunction("group_concat", Hibernate.STRING));
}

}

并在查询中像这样使用它

new Query(" >= date_sub_interval(CURRENT_DATE(),1, DAY)");
2020-05-17