1.在hql语句中并不能使用 mysql的find_in_set()函数,能通过重写dialcet将find_in_set()注册进去吗?
2.能注册自己定义的函数么?该怎么实现?
在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) );
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。