我們必須連接到其中每一個表有一個稱爲deleted
列這表明如果實體已被刪除或不遺留數據庫Grails應用程序(這意味着數據實際上從未得到從表中刪除,它在一段時間後被歸檔)。對於每一個我們的域對象的,我們想增加一個自動where
條款,看起來像:的Grails - 添加where子句所有的域對象
where deleted = false
,使我們不必明確的內容添加到應用程序中的每個查詢。有沒有辦法在Grails中實現這一點?
我們必須連接到其中每一個表有一個稱爲deleted
列這表明如果實體已被刪除或不遺留數據庫Grails應用程序(這意味着數據實際上從未得到從表中刪除,它在一段時間後被歸檔)。對於每一個我們的域對象的,我們想增加一個自動where
條款,看起來像:的Grails - 添加where子句所有的域對象
where deleted = false
,使我們不必明確的內容添加到應用程序中的每個查詢。有沒有辦法在Grails中實現這一點?
我不認爲GORM直接支持這一點。但是,您可以利用hibernate攔截器並自行添加它。特別是,你可以使用onPrepareStatement
鉤where子句添加到冬眠生成每個查詢。例如:
// src/groovy/mypackage/MyEntityInterceptor.groovy
package mypackage
class MyEntityInterceptor extends org.hibernate.EmptyInterceptor {
String onPrepareStatement(String sql) {
return addNotDeletedClause(sql)
}
}
// grails-app/conf/spring/resources.groovy
beans = {
entityInterceptor(MyEntityInterceptor)
}
不幸的是,你必須解析傳入SQL語句來找出其中插入where
條款。
我使用Hibernate Filter plugin對這類事情。
嗨,看看[這個問題](http://stackoverflow.com/questions/6082524/is-it-possible-to-metaprogram-named-queries-onto-a-grails-domain-class)也許它可以幫助你。 –