在浏览了GORM的文档后,我发现了如何在对象之间创建一对一的关系。但是,我还没弄清楚如何实现我想要的关系。我正在尝试创建的关系充当一对一的关系,但保留以前的行条目以用于历史目的。
例如,汽车在其整个生命周期内可拥有多个所有者。如果我有Car和Owner域对象,如何指定给定Car ID的Owners表中最新的条目是否正确?
答案 0 :(得分:3)
有很多不同的方法可以对此进行建模。 IMO,最灵活的方法之一是:
class User {
String name
static hasMany = [ownerships: Ownership]
}
class Car {
String name
static hasMany = [ownerships: Ownership]
}
class Ownership {
Date start
Date end
static belongsTo = [owner: User, car: Car]
}
例如,当Ann将她的汽车卖给Bob时,我们将Ann的Ownership
记录的结束时间设置为销售时间,并为Bob保留新的Ownership
记录,并记录开始时间设定为销售时间。
如果获取汽车的当前所有者是我们经常需要执行的操作,我们可以将currentOwner
方法添加到Car
class Car {
String name
static hasMany = [ownerships: Ownership]
Ownership currentOwner() {
// depending on how this method is used, you might want to
// return the User instead of the Ownership
Ownership.findByEndIsNullAndCar(this)
}
}