gpt4 book ai didi

hibernate - 如何在grails中保存具有hasOne和belongsTo关系的对象

转载 作者:行者123 更新时间:2023-12-02 14:47:00 27 4
gpt4 key购买 nike

我定义了三个类。

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并属于(双向)。所以在grails中定义关系是一种好的做法。

2)我的第二个问题是 grails自动保存子对象。在这种情况下。我将pointDistanceMapping对象作为数组,执行grails将pointDistanceMapping数组值保存到数据库,并将照顾 ,在point_distance_mapping 中设置外键distance_chart_id

当我保存DistanceChart对象时,grails是否在办公室表中设置distance_chart_id

如果grails不保存关联的对象,则意味着当我保存DistanceChart时,pointdistancemapping将被保存。然后如何执行此操作。

distanceChart保存后,如何在办公室表格中保存distance_chart_id。

最佳答案

  • 进行迭代更方便。通常,如果您的代码不需要关系属性(YAGNI),请不要创建一个。如果集合很大,则无论如何都不要创建集合属性,最好使用动态findAll*()方法对关系进行操作。
  • Grails级联由 belongsTo cascade mapping DSL控制:

    cascade-[...]可以是allmergesave-updatedeletelockrefreshevictreplicateall-delete-orphan中的一个或多个(以逗号分隔)(仅一对多关联)。
    默认情况下,在一个实体all另一个实体
  • 的情况下,GORM将 belongsTo的级联策略配置为

    关于hibernate - 如何在grails中保存具有hasOne和belongsTo关系的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7035794/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com