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

grails addTo为hasMany关系输入重复数据

发布时间:2020-12-14 16:27:53 所属栏目:大数据 来源:网络整理
导读:我有一个非常简单的hasMany关系,其中“product”有很多“包”.我正在运行一个脚本来尝试填写数据,这在第一次运行时工作正常.但是在第二次运行时,它开始输入重复项,但我对hasMany不可能 package = Package.findBySourceId(packageId) ?: new Package(name:pac
我有一个非常简单的hasMany关系,其中“product”有很多“包”.我正在运行一个脚本来尝试填写数据,这在第一次运行时工作正常.但是在第二次运行时,它开始输入重复项,但我对hasMany不可能

package = Package.findBySourceId(packageId) ?: new Package(name:packageName,price:packagePrice,sourceId:packageId).save(flush:true)

product = Product.findBySourceId(productId)                 
product.addToPackages(package)
product.save(flush:true)

当我进行sql登录时,我可以看到有时候应该在addToPackages调用上运行的select不会运行.它只是选择查找产品,然后直接插入连接表.

我不想因为工作而添加确切的查询,但基本上就是这样

Select -> for the initial package which it finds

Select -> for product which it finds by the product id

Insert -> insert into the join table without even a select to check if an entry exists

但是,有时候不是那个插入,它会运行一个select并找到匹配,然后流程将重新开始.不知道这里的grails背后的逻辑.请记住,我有一个运行脚本,用数千行来提取数据,这是一个会话问题吗?

解决方法

您是否在一对多的“多”方面使用了列表或集合?默认值为Set,应该限制重复.如果您使用List映射了集合,那么您可能已经创建了该问题.

或者,验证标识属性“package”是否具有equals()和hashCode()的正确行为.

(编辑:李大同)

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

    推荐文章
      热点阅读