Grails - 需要根据连接表上的条件限制获取的行

时间:2010-04-20 15:42:24

标签: grails join groovy dns gorm

我有两个域 Car 驱动程序,它们具有多对多关系。该关联在表 tblCarsDrivers 中定义,其中毫不奇怪地,两个表的主键还具有另外的布尔字段已删除。这就是问题所在。当我在域名Car上找到/获取查询时,我会获取所有相关的驱动程序,而不管它们在tblCarsDrivers中的删除状态,这是预期的。

  

我需要放一个子句/约束   从中排除已删除的关联   提取记录列表。

PS:我尝试在joinTable名称中使用关联域CarDriver,但这似乎不起作用。显然它只需要表名,而不是地图。

PPS:我知道除了映射表中的映射键之外还有其他任何字段,但这是我得到它并且无法更改的。

Car domain定义为 -

class Car {
    Integer id
    String name

    static hasMany = [drivers:Driver]

    static mapping = {
        table 'tblCars'
        version false
        drivers joinTable:[name: 'tblCarsDrivers',column:'driverid',key:'carid']
    }
}

谢谢!

1 个答案:

答案 0 :(得分:3)

  

我知道其他任何东西都不自然   除了映射键之外的字段   映射表但这就是我得到它的方式   它无法改变。

这并不奇怪。如果要存储关系的属性,这是显而易见的解决方案。除了与Car和Driver的关系之外,您应该恢复具有已删除属性的关联域CarDriver,然后您应该能够编写一个排除已删除驱动程序的查询。

提供了如何定义此类映射的综合示例here