2014-03-31 52 views
1

我有一個關於如何在Grails中使用PostgreSQL的簡單擴展的問題。Grails/Gorm和Postgresql Unaccent

我在法語裏有很多描述,而PostgreSQL不重音不敏感。我安裝了unaccent擴展,它在PgAdmin III上運行得非常好。

如何配置Grails和/或PostgreSQL以在控制器中使用unaccent?

這是我的域名:

Class Description { 
    String content 
    int type = -1 
} 

例如,可以使用我GORM 「翻譯」 下一個查詢?

SELECT content 
FROM description 
WHERE unaccent(content) ILIKE unaccent(%myInputHere%) 

感謝您閱讀

回答

1

由於這是SQL具體,你需要將標準範圍內使用SQL Restriction。例如:

def myinput = params.myinputfieldname 
def results = Description.createCriteria().list() { 
    sqlRestriction "unaccent(content) ILIKE unaccent('%$myinput%')" 
} 

至少這是主意。上述

編輯

請務必小心,要注意在限制的事實「內容」是指實際的SQL列名,而不是域名的字段名。

+0

聽起來真酷!我會盡力希望它能正常工作:) – Abincepto

+1

@ArrrghGrails注意當你使用'sqlRestriction'時,必須使用實際的列名而不是域對象的字段名。上面答案中使用的'content'反映了表中的列名。 – dmahapatro

+0

@dmahapatro優秀點(將編輯帖子以包含此警告)。 –