Grails 如何在同一类型上同时使用hasOne和hasMany关系?
地图域有一个中心和一个坐标列表。中心和路径具有相同的类型,即坐标Grails 如何在同一类型上同时使用hasOne和hasMany关系?,grails,gorm,Grails,Gorm,地图域有一个中心和一个坐标列表。中心和路径具有相同的类型,即坐标 class Map { Coordinate center List path static hasOne = [center: Coordinate] static hasMany = [path: Coordinate] static constraints = { } } 坐标域定义为 class Coordinate { static belongsTo
class Map {
Coordinate center
List path
static hasOne = [center: Coordinate]
static hasMany = [path: Coordinate]
static constraints = {
}
}
坐标域定义为
class Coordinate {
static belongsTo = [map: Map]
static constraints = {
}
}
现在我有一个简单的代码
def map = new Map(center: new Coordinate())
map.addToPath(new Coordinate())
map.save()
这是抛出异常
2016-11-02 13:08:55,970 [Thread-15] ERROR util.JDBCExceptionReporter - NULL not allowed for column "MAP_ID"; SQL statement:
insert into coordinate (id, version, map_id, path_idx) values (null, ?, ?, ?) [23502-164]
Exception thrown
org.springframework.dao.DataIntegrityViolationException: could not insert: [exampletest.Coordinate]; SQL [insert into coordinate (id, version, map_id, path_idx) values (null, ?, ?, ?)]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not insert: [exampletest.Coordinate]
我想知道错误的原因是什么。我认为,由于坐标属于地图,保存地图将自动保存其子对象,在本例中,子对象是坐标。我感谢任何帮助和解决这个问题,我坚持。谢谢