我正在创建一个将连接到现有数据库的域类。不幸的是,多个域对象存储在同一个表中(该表非常通用),我正在尝试找到一种方法,在通过GORM进行的每个查询中包含其他条件。
例如,我有一个Article
域类,它存在于exp_channel_data
表中。该表包含site_id
和channel_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
}
答案 0 :(得分:2)
根据您在此处描述的内容,因为它是每个域类,所以这看起来是使用Hibernate filters plugin for Grails的完美情况。这样,您可以定义要应用于这些域中的条件的默认约束。非常值得一看,看看它是否能满足您的需求。