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