JPA自定義dialect,支持regexp_like函數 – JAVA編程語言程序開發技術文章

regexp_like為oracle10過後出來的一個新函數,是為瞭做正則表達式的匹配,但是hsql確不支持該sql,後來查瞭一下大概原因,是方言中間沒有將該函數註冊進去,所以不能對應的將hsql轉換為sql,解決辦法:

[java]
public class TestOracle10gDialect extends Oracle10gDialect { 
    public TestOracle10gDialect() { 
        super(); 
        /**
         * 對於regexp_like,並不知道其是什麼類型,應該為boolean類型,但是oracle對外提供的類型並沒有boolean類型,
         * 所以為瞭使其能夠正常運作,將結果用1(true)、0(false)來表示
         */ 
        registerFunction("regexp_like", new SQLFunctionTemplate( 
                Hibernate.BOOLEAN, 
                "(case when (regexp_like(?1, ?2)) then 1 else 0 end)")); 
    } 

其實很多人都遇到過類似的問題,而答案都是改用like,其實like雖然好用,但是其查找功能肯定比不上regexp_like靈活。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *