【问题标题】:Integrity constraint violated when deleting in grails在 grails 中删除时违反完整性约束
【发布时间】:2014-07-21 10:51:04
【问题描述】:

我有以下域类

class User{
    static hasMany = [servers: Server]

    static mapping = {
        servers cascade: 'all-delete-orphan'
    }
}

class Server{
    int sid
}

当我删除服务器时,我得到

违反完整性约束(XXXXXX.XXXXXXXXX) - 找到子记录

如何在 grails 中将CASCADE ON DELETE 约束添加到外键。

【问题讨论】:

  • 不确定,如果这是解决方案,但您必须在 Server 类中执行 static belongsTo = User,否则服务器可能会被其他用户引用,因此无法轻松删除。另一个提示:如果服务器类只包含一个 int,那么您可以删除该类并使用 GORM 功能映射 Basic Collection Types,如下所示:static hasMany = [servers: Integer]

标签: grails grails-2.0 grails-domain-class


【解决方案1】:

您在UserServer 之间定义了一个单向关系。由于Server 不知道其相关的User,您需要执行以下操作:

def user = User.get(123L)

def server = user.servers.find { it.sid == 321 }

if (server) {
  user.removeFromServers(server) 
  user.save()
  server.delete()
}

【讨论】:

    猜你喜欢
    • 2019-01-02
    • 1970-01-01
    • 2012-11-27
    • 2020-01-14
    • 2021-12-13
    • 2017-10-01
    • 2019-04-12
    相关资源
    最近更新 更多