在grails中删除时违反了完整性约束
我有以下域类在grails中删除时违反了完整性约束,grails,grails-2.0,grails-domain-class,Grails,Grails 2.0,Grails Domain Class,我有以下域类 class User{ static hasMany = [servers: Server] static mapping = { servers cascade: 'all-delete-orphan' } } class Server{ int sid } 当我删除服务器时,我得到 违反完整性约束(XXXXXX.xxxxxxxx)-找到子记录 如何向grails中的外键添加cascadeondelete约束。您定义了用户和服
class User{
static hasMany = [servers: Server]
static mapping = {
servers cascade: 'all-delete-orphan'
}
}
class Server{
int sid
}
当我删除服务器时,我得到
违反完整性约束(XXXXXX.xxxxxxxx)-找到子记录
如何向grails中的外键添加
cascadeondelete
约束。您定义了用户
和服务器
之间的单向关系。由于服务器
不知道与其相关的用户
,因此需要执行以下操作:
def user = User.get(123L)
def server = user.servers.find { it.sid == 321 }
if (server) {
user.removeFromServers(server)
user.save()
server.delete()
}
不确定这是否是解决方案,但您必须在服务器类中执行
static belongsTo=User
,否则服务器可能会被其他用户引用,因此无法轻松删除。另一个提示:如果服务器类只包含一个int,那么您可以删除该类并使用GORMs特性进行如下映射:static hasMany=[servers:Integer]