Отношения между моими доменами:
class Cartridge
{ ...
static hasMany = [cartridgeLanes: CartridgeLane]
static belongsTo = [request:Request]
}
class CartridgeLane
{...
CartridgeLaneSampleAttributes cartridgeLaneSampleAttributes
static belongsTo = [cartridge:Cartridge]
}
class CartridgeLaneSampleAttributes
{...
static belongsTo = CartridgeLane
}
Код для каскадного обновления:
def sampleAttributes = new CartridgeLaneSampleAttributes()
sampleAttributes.sampleId = sample.get("ID")
...
def cartridgeLane = new CartridgeLane()
cartridgeLane.laneId = lane.get("ID") as Integer
...
cartridgeLane.cartridgeLaneSampleAttributes = sampleAttributes
def cartridge = Cartridge.findByCartridgeID(cartridgeId)
cartridge.addToCartridgeLanes(cartridgeLane)
cartridge.save()
Сначала я связываюсь sampleAttributes с картридж-лейн , затем я нахожу картридж , который я хочу обновить (ссылаюсь на картридж-лейн ), и, наконец, я сохраняю.
Этот код содержит только INSERT данные (например, добавление sampleAttributes и channelLane data в картридж).
Моя проблема в том, что я ищу UPDATE (не INSERT).
Как я могу управлять каскадным обновлением?
Как gorm отличает обновление от вставки?
Существует ли более эффективный способ каскадного обновления?