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

相關文章
相關標籤/搜索