Я определил три класса.
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 и принадлежат (двунаправленный). Так что является хорошей практикой для определения отношений в граале.
2) Мой второй вопрос: grails автоматически сохраняет дочерние объекты . в этом контексте. Я получаю объект pointDistanceMapping в виде массива, сохраняет ли grails значения массива pointDistanceMapping в базу данных и позаботится о установке внешнего ключа distance_chart_id в point_distance_mapping
Устанавливает ли Grails distance_chart_id в офисном столе, когда я сохраняю объект DistanceChart
Если Grails не сохраняет связанные объекты, значит, когда я сохраняю DistanceChart, сопоставление pointdistance сохраняется. Затем, как это сделать.
Как сохранить distance_chart_id в офисном столе при сохранении distanceChart.