2013-04-10 124 views
2

可以说我有这两个班在我的应用程序:Grails的 - 在子类的唯一约束

class User 
{ 
    static belongsTo = [company: Company] 
    Address address 
    Phone phone 
    String name 
    Integer salary 
    Date birthDate 
} 

class Company { 

Boolean active = false 

static hasMany = [users: User] 
} 

一些真正基础。 我想在用户字段的公司类中制定一个约束。我不会在同一家公司拥有两个具有相同姓名地址和电话的用户。

我应该能够添加另一个用户这三个匹配字段为不同的公司。而且,name是一个可以为空的字段,所以我应该可以为同一个公司ID使用相同地址和电话的记录名称为空。

有人可以帮我定义这样的约束吗?

回答

2

看看这是你在找什么,但要确保你的公司先保存好。

Company.withTransaction { 
    def compnay= new Company (active:true) 
    company.save(flush:true) 

    def user = new User (...) 
    compnay.addToUsers(user) 
} 

/

class User 
{ 
    static belongsTo = [company: Company] 
    Address address 
    Phone phone 
    String name 
    Integer salary 
    Date birthDate 


    static constraints = { 
     name unique: ['company','address','phone'] 
    } 
} 

/

class Company { 

Boolean active = false 

static hasMany = [users: User] 
}