HQL 没法使用MYSQL的 REGEXP 正则表达式

SELECT h.* FROM `hotel` h where h.address REGEXP ? mysql

这个在HQL中 是不认识 REGEXP 关键字 sql

咱们实现一个本身的mysql方言类,而后注册这种语法为函数 函数

public class RegMySQLDialect  extends MySQLDialect {
    public RegMySQLDialect() {
        super();
        registerFunction("regexp", new SQLFunctionTemplate(Hibernate.INTEGER, "?1 REGEXP ?2"));
    }
}
而后hibernate的配置项改成:

hibernate.dialect = com.vipshop.platform.metasys.util.RegMySQLDialect spa

HQL对应的也要进行改变,改为函数式的使用方法 hibernate

SELECT h.* FROM `hotel` h where REGEXP(h.address,?)=1 code


参考:http://stackoverflow.com/questions/17702544/hibernate-regexp-mysql regexp

相关文章
相关标签/搜索