您的位置:首页 > 数据库 > MySQL

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

2017-06-02 17:08 555 查看
SELECT h.* FROM `hotel` h where h.address REGEXP ?

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

我们实现一个自己的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

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

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

参考:http://stackoverflow.com/questions/17702544/hibernate-regexp-mysql
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: