我有一个域类arHistory,如下所示:

package ars
import ars.AccessRequest
import gra.Users
class ArHistory {
    Long id =2340
    Users updatedby
    Date updatedon
    String requeststatus
    static hasMany=[accessrequests:AccessRequest]

    static constraints = {
         requeststatus(blank:false, nullable:false)
    }

现在,在运行应用程序之后,GORM将创建表ar_history和ar_history_access_request(一对多关系的联接表)

上面的联接表只有2个外键,表本身没有主键ID
我想知道三件事
1)我是否需要连接表的主键ID
2)如果是,如何创建ID(我是否通过mysql手动创建)
3)拥有hasMany()而不是在ArHistory中定义一个类变量AccessRequest的优点是什么,它仅仅是规范化的数据吗?

问候
普里扬克

最佳答案

您不需要联接表中的主键,因为您不允许使用hasMany进行重复。阅读hasMany的文档:“Grails将基于hasMany设置将类型为java.util.Set的属性自动注入(inject)域类中”。因此,不需要主键。

第三个问题是什么意思? hasMany允许您向集合中添加许多AccessRequest对象。

关于grails - 使用gorm进行一对多映射,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8598036/

10-14 20:21