我有两个域 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']
}
}
谢谢!
答案 0 :(得分:3)
我知道其他任何东西都不自然 除了映射键之外的字段 映射表但这就是我得到它的方式 它无法改变。
这并不奇怪。如果要存储关系的属性,这是显而易见的解决方案。除了与Car和Driver的关系之外,您应该恢复具有已删除属性的关联域CarDriver,然后您应该能够编写一个排除已删除驱动程序的查询。
提供了如何定义此类映射的综合示例here。