Rob*_*Rob 5 grails groovy has-many
我有一个非常简单的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)
Run Code Online (Sandbox Code Playgroud)
当我进行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
Run Code Online (Sandbox Code Playgroud)
但是,有时候不是那个插入,它会运行一个select并找到匹配,然后流程将重新开始.不知道这里的grails背后的逻辑.请记住,我有一个运行脚本,用数千行来提取数据,这是一个会话问题吗?
您是否在一对多的“多”方面使用过列表或集合?默认值是一个 Set,它应该限制重复。如果您使用列表映射集合,那么您可能已经造成了问题。
或者,验证身份属性“package”对于 equals() 和 hashCode() 是否具有正确的行为。
| 归档时间: |
|
| 查看次数: |
1927 次 |
| 最近记录: |