Grails域约束定义

时间:2010-01-15 16:40:05

标签: grails groovy

我有一个带有-simplified - Domain类的Grails应用程序,如下所示:

class Capacity {

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


Date month    
Company company
String note
...
}

month-company 对必须是唯一的。 (即他们应该是DB的主键)。

如何定义这样的约束?

提前多多感谢

路易斯

2 个答案:

答案 0 :(得分:6)

由于您希望在数据库中将其设为composite primary key,因此您必须声明该映射:

class Capacity implements Serializable {
    Date month    
    Company company
    String note
    ...

    static mapping = { 
        id composite:['month', 'company'] 
    } 
}

生成下表(MySQL):

CREATE
    TABLE capacity
    (
        MONTH DATETIME NOT NULL,
        company_id bigint NOT NULL,
        version bigint NOT NULL,
        note VARCHAR(255) NOT NULL,
        PRIMARY KEY (MONTH, company_id),
        INDEX FKFBF514BA69595C7A (company_id)
    )
    ENGINE=MyISAM DEFAULT CHARSET=latin1

答案 1 :(得分:5)

应该是这样的:

static constraints = {              
    month(blank:false, nullable:false, unique:'company')
    company(blank:false, nullable:false)
}

看看http://grails.org/doc/latest/ref/Constraints/unique.html