组合不创建外键引用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组合不创建外键引用相关的知识,希望对你有一定的参考价值。

我有两个域类如下,

class Agent {
    String name
    Team team
}

class Team {
    String name 
    Agent primarySupervisor
    static hasMany = [secondarySupervisors:Agent]
}

每个代理都有一个团队,每个团队都有一个主要主管和多个二级主管。

上面的代码不会为辅助管理程序映射创建表,如果我从Team域中删除团队属性,或者从Team域中删除primarySupervisor,则会创建映射表。

我究竟做错了什么?

答案

此域类结构应该适合您。

 class Agent {
        String name
        static belongsTo = Team
        static hasOne = [team: Team] // Every agent has a team
    }

    class Team {
        String name 
        static hasMany = [secondarySupervisors:Agent] // every team has a primary supervisor and multiple secondary supervisors
    }

这里有很多关系将形成一个新表作为team_agent。

以上是关于组合不创建外键引用的主要内容,如果未能解决你的问题,请参考以下文章

在复合键和外键之间创建关系

外键可以引用组合的唯一键吗?

外键可以引用具有复合(即两列的组合)键的表吗?

数据库演练外键SQL语句的编写&分组和聚合函数的组合使用

显示由外键引用到用户配置文件表的表中的项目列表

SQL Server Compact 在创建表中不支持关键字“外键引用”还是我犯了错误?