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