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

时间:2013-12-31 15:59:03

标签: grails gorm

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

例如,我有一个Article域类,它存在于exp_channel_data表中。该表包含site_idchannel_id列,用于指示该行是否实际上是文章(其中site_id = 2,channel_id = 3)。

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

static constraints = {
    site_id validator: { it == 2}
    channel_id validator: { it == 3}
}

但我想防止无效的文章首先被退回(保持清洁,也是出于性能原因)。

我想象的是能够覆盖从我的域类发出的每个查询,并插入where site_id=2 and channel_id=3以便我甚至看不到无效的行。

任何想法都会受到赞赏,提前谢谢。

更新

使用hibernate-filter插件(下面建议)后,这就是我在域类中使用的,以防止返回不必要的条目。

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

1 个答案:

答案 0 :(得分:2)

根据您在此处描述的内容,因为它是每个域类,所以这看起来是使用Hibernate filters plugin for Grails的完美情况。这样,您可以定义要应用于这些域中的条件的默认约束。非常值得一看,看看它是否能满足您的需求。