2014-03-31 47 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优秀点(将编辑帖子以包含此警告)。 –