データベースをExcelからインポートする必要があります。データベースの一部は次のようになります。
class Network {
String externalId
String name
static hasMany = [phones: Phone]
static mapping = {
phones cascade: 'save-update,delete,all-delete-orphan'
}
}
class Phone{
String number
static belongsTo = [Network]
}
また、Excel レコードを定義するクラスがあります。
class NetworkExcelRecord{
String externalId
String name
String phone1
String phone2
public def updateDomain() {
if (!externalId)
return null
Network instance = Network.findByExternalId(externalId) ?: new Network()
instance.properties = this.properties
if (instance.isDirty() || !instance.id)
instance.save(failOnError: true,flush: true)
}
private def getPhones() {
def phonesOld = Network.findByExternalId(externalId)?.phones
def phonesNew = []
(1..2).collect {this."phone$it"}.eachWithIndex {String phoneNumber, Integer index ->
if (phoneNumber) {
Phone phone = phonesOld.find {it.number == phoneNumber}
if (!phone)
phone = new Phone(number: phoneNumber)
phone.sortOrder = index
phone.save()
phonesNew << phone
}
}
phonesNew
}
}
ただし、参照ネットワーク - 電話は更新されますが、孤立した電話は削除されません。助言がありますか?