У меня довольно простые отношения hasMany, в которых «product» 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, я вижу, что иногда select, который должен работать на 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
Однако иногда вместо этой вставки он запускает выборку и находит совпадение, и процесс начинается заново.Никаких идей о логике, которая происходит здесь за Граалями.Имейте в виду, у меня запущен скрипт, который извлекает данные тысячами строк, это проблема сеанса как-то?