Grails 是否忽略所有删除孤立项?
我必须从excel导入数据库。数据库的一部分如下所示:Grails 是否忽略所有删除孤立项?,grails,gorm,Grails,Gorm,我必须从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
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
}
}
class NetworkExcelRecord{
外部字符串
字符串名
字符串电话1
字符串电话2
public def updateDomain(){
如果(!externalId)
返回空
网络实例=Network.findByExternalId(externalId)?:新网络()
instance.properties=this.properties
if(instance.isDirty()| |!instance.id)
保存(failOnError:true,flush:true)
}
私人电话(){
def phonesell=Network.findByExternalId(externalId)?.phones
def phonesNew=[]
(1..2).收集{this.“phone$it”}.eachWithIndex{String phoneNumber,Integer index->
if(电话号码){
Phone Phone=phonesell.find{it.number==phoneNumber}
如果(!电话)
电话=新电话(号码:phoneNumber)
phone.sortOrder=索引
phone.save()
phonesNew尝试删除Phone
类中的belongsTo
。通过在网络的映射中定义级联
,您不需要belongsTo
,因为这只定义了关系的保存-删除级联