开发者社区> 问答> 正文

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

爵霸 2016-02-29 16:22:16 1788

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

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

关系型数据库 MySQL Java 数据库连接
分享到
取消 提交回答
全部回答(1)
  • 爵霸
    2019-07-17 18:50:30

    在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) );
    }
    }
    0 0
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题