使用gorm进行一对多映射

时间:2011-12-22 00:19:12

标签: grails groovy gorm

我有一个域类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 我想知道3件事, 1)我是否需要为连接表设置主键ID 2)如果是,我如何创建id(我是否通过mysql手动创建它) 3)具有hasMany()的优势,而不是在ArHistory中定义类变量AccessRequest,它只是规范化数据吗?

此致 Priyank

1 个答案:

答案 0 :(得分:1)

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

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