gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:54:34 24 4
gpt4 key购买 nike

我有一个非常简单的 hasMany 关系,其中“产品”有许多“包”。我正在运行一个脚本来尝试填充数据,它在第一次运行时运行良好。然而,在第二次运行时,它开始输入重复项,我虽然这对于 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 -> 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

但是,有时它会运行选择并找到匹配项而不是插入,然后该过程将重新开始。不知道这里 grails 背后的逻辑。请记住,我正在运行一个脚本,该脚本正在提取数千行数据,这是否是 session 问题?

最佳答案

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

或者,验证身份属性“包”对于 equals() 和 hashCode() 具有正确的行为。

关于grails addTo 为 hasMany 关系输入重复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6036516/

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