开发者社区> 问答> 正文

这样能通过重写dialect在hibernate中注册自定义的函数吗???

1.在hql语句中并不能使用 mysql的find_in_set()函数,能通过重写dialcet将find_in_set()注册进去吗?

2.能注册自己定义的函数么?该怎么实现?

展开
收起
爵霸 2016-02-29 16:22:16 3436 0
1 条回答
写回答
取消 提交回答
  • 在hibernate core包里有一个类Dialet是专门定义数据库函数的类 :包含数据类型以及函数
    在此基础上hibernate会根据不同的数据库来集成Dialet此类
    org.hibernate.dialect里会有数据库相关的类来定义相关数据库特有的函数 如:DB2,Oracle10g,MySQL等流行的数据库都会在此定义
    所以你要添加一个自定义函数的话只要继承相应的数据库dialect就可以了
    如:

    package org.hibernate.dialect;
    
    import org.hibernate.dialect.function.StandardSQLFunction;
    import org.hibernate.type.StandardBasicTypes;
    
    public class LLPostgreSQLDialect extends PostgreSQL82Dialect {
      public LLPostgreSQLDialect() {
        super();
        registerFunction( "split_part", new StandardSQLFunction("split_part", StandardBasicTypes.STRING) );
        registerFunction( "count", new StandardSQLFunction("count", StandardBasicTypes.LONG) );
    }
    }
    2019-07-17 18:50:30
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载