【发布时间】:2011-08-12 05:05:56
【问题描述】:
我已经定义了三个类。
1)
class Office extends Organization {
String name
DistanceChart distanceChart
static constraints = {
name(nullable : false)
distanceChart(nullable:true)
}
static mapping = {
officeRoles(cascade:'all')
}
public String toString() {
name
}
}
2)
class DistanceChart {
VehicleClassification classification1
VehicleClassification classification2
VehicleClassification classification3
VehicleClassification classification4
VehicleClassification classification5
List<PointDistanceMapping> pointDistanceMapping =new ArrayList<PointDistanceMapping>()
static contraints ={
classification1(nullable:true);
classification2(nullable:true)
classification3(nullable:true)
classification4(nullable:true)
classification5(nullable:true)
pointDistanceMapping()
}
static belongsTo = [office:Office]
static hasMany = [pointDistanceMapping : PointDistanceMapping]
static mapping = {
pointDistanceMapping cascade: "all"
}
public String toString() {
id
}
}
3)
class PointDistanceMapping {
Point point
float distance1
float distance2
float distance3
float distance4
float distance5
static constraints = {
point()
distance1(nullable:true)
distance2(nullable:true)
distance3(nullable:true)
distance4(nullable:true)
distance5(nullable:true)
}
static belongsTo = [distanceChart : DistanceChart]
public String toString() {
id
}
}
我有两个疑问:
1) 我是否需要在两个类中指定关系,即 hasOne 或 hasMany 和 belongsTo(双向)。那么定义的好习惯是什么grails 中的关系。
2) 我的第二个问题 grails 会自动保存子对象。在这种情况下。我将 pointDistanceMapping 对象作为数组获取,grails 是否将 pointDistanceMapping 数组值保存到数据库中,并将负责在 point_distance_mapping 中设置外键 distance_chart_id
当我保存 DistanceChart 对象时,grails 是否在办公桌中设置 distance_chart_id
如果 grails 不保存关联的对象意味着当我保存 DistanceChart 时,pointdistancemapping 被保存。那么如何做到这一点。
distanceChart 保存时如何将 distance_chart_id 保存在 office 表中。
【问题讨论】:
-
您在 PointDistanceMapping 中有拼写错误 - “nulable”应该是“nullable”