加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Grails / Groovy中以一对多的关系清除和替换集合

发布时间:2020-12-14 16:31:16 所属栏目:大数据 来源:网络整理
导读:这个问题分为两部分,第一部分是关于清除列表,第二部分是关于为所有者分配一个对象. Grails中我的模型中的两个域对象之间存在一对多的关系.关系看起来像这样… class Person { static hasMany = [authorities: Role,locations: Location]}class Location { st
这个问题分为两部分,第一部分是关于清除列表,第二部分是关于为所有者分配一个对象.

Grails中我的模型中的两个域对象之间存在一对多的关系.关系看起来像这样…

class Person {

    static hasMany = [authorities: Role,locations: Location]
}

class Location {

    static belongsTo = Person

}

在我的应用程序中,Person上的位置列表完全刷新,并替换为用户操作的新列表.更重要的是获取独立于关联Person的Location对象列表.我决定哪个人通过检索当前登录的用户来应用它,我称之为activePerson,对我而言是不错的.

我想做的是删除activePerson上的所有现有位置,并插入所有新的位置,并将其与activePerson关联.我有一堆Person,我不想坚持在这一点,所以我想避免保存整个父对象,只是因为位置的孩子已经改变.

我想到迭代activePerson.locations列表并逐个删除它们,并依靠GORM / Hibernate将查询批处理并最终进行刷新.这似乎是强力,虽然它可能工作.我期待着有一个clearLocations方法或类似的东西,但我找不到一个.

如果我只是用一个新的列表替换activePerson.locations并调用activePerson.save(flush:true),GORM会处理现有行的删除吗?

其次我想把新的Location对象放到activePerson上.再次,我可以填充activePerson.locations并保存整个事情,但是我想避免如果可以的话.我可以单独保存它们,但是如何在我去的每个Location对象上设置belongsTo?

所以要回顾一下:

>如何在一对多集合的多端清除列表?
>如何将独立对象与父对象相关联并单独保留?

谢谢

解决方法

对于#1,您可以清除该集合(默认情况下为Set):

activePerson.locations.clear()

对于#2使用addToLocations:

activePerson.addToLocations(location)

并且当您保存该人时,将更新位置< - >个人关系.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读