grails域类可以在每个查询中包含自定义条件吗?

grails域类可以在每个查询中包含自定义条件吗?,grails,gorm,Grails,Gorm,我正在创建一个将连接到现有数据库的域类。不幸的是,多个域对象存储在同一个表中(该表非常通用),我正试图找到一种方法,在通过GORM进行的每个查询中包含额外的条件 例如,我有一个Article域类,它存在于exp\u channel\u data表中。该表有site\u id和channel\u id列,用于指示行是否实际上是一篇文章(其中site\u id=2,channel\u id=3) 我可以设置自定义约束以确保验证正常工作: static constraints = { site

我正在创建一个将连接到现有数据库的域类。不幸的是,多个域对象存储在同一个表中(该表非常通用),我正试图找到一种方法,在通过GORM进行的每个查询中包含额外的条件

例如,我有一个
Article
域类,它存在于
exp\u channel\u data
表中。该表有
site\u id
channel\u id
列,用于指示行是否实际上是一篇文章(其中site\u id=2,channel\u id=3)

我可以设置自定义约束以确保验证正常工作:

static constraints = {
    site_id validator: { it == 2}
    channel_id validator: { it == 3}
}
但是,我想在一开始就防止返回无效的文章(保持内容整洁,并且出于性能原因)

我所设想的是能够覆盖从我的域类发出的每个查询,并在site_id=2和channel_id=3处插入
,这样我甚至不会看到无效行

如有任何想法,将不胜感激,提前感谢

更新

在使用hibernate过滤器插件(建议如下)之后,这就是我在域类中使用的防止返回不必要的条目的方法

static hibernateFilters = {
    site_idFilter condition: 'site_id=2', default: true
    channel_idFilter condition: 'channel_id=3', default: true
}

从您在这里描述的内容来看,因为它是按域类的,所以这看起来是使用。通过这种方式,您可以定义要应用于这些域中的条件的默认约束。值得一看,看看它是否能满足您的需求。

我发现这个插件在最近的Graila版本中不可靠,但是YMMV@Don根据插件页面,它最近已被更新,可以与较新版本的Grails一起使用。@Joshuamore,我将研究该插件,感谢您的回复。你提到了“每个域类”的标准,出于好奇,如果不是每个域类,你会有不同的建议吗?再次感谢@在这种情况下,mmd唯一想到的是将AST转换与此插件结合使用。注入可重用的HibernateFilter。另一个选择是分离插件,并将其用作我自己实现的示例,以更好地满足我的特定需求。我指出“每域类”的主要原因是插件以每域类的方式工作。插件为我的用例工作。通过使用DataSource.groovy中的
logSql=true
设置,我能够验证查询是否包含我的过滤器。