Grails在Domain Class的多个属性上为唯一对象创建约束

时间:2015-08-06 06:44:01

标签: grails grails-domain-class

我有一个Domain Class作为First。 它具有名为objectA的ClassA属性,一个String名称和一个Joda DateTime对象作为日期。

对于date,objectA和name的每个唯一组合,必须有一个唯一的First对象。

我给出了以下teh类和约束的定义。如果我从grails脚手架View.I创建域对象,如果我创建一个重复的条目我会收到错误,这完全正常:

1 error prohibited this record from being saved
There were problems with the following fields:
Property [name] of class [class in.test.First] with value ["nameValue"] must be unique

但是,如果从服务或控制器执行代码,则会多次创建同一个对象。(这很奇怪。)

class First {

    ObjectId id
    ClassA objectA
    String name
    DateTime date


    static mapping = {
        date index: true
        objectA index: true
        name index: true
    }

    static constraints = {
        name(unique: ['objectA', 'date'])
   }

使用这些属性定义Domain类的正确方法是什么?

PS:没有使用hibernate插件,只使用mongoDB作为数据库。

plugins {
    ....
    compile ":mongodb:3.0.3"
    compile ":spring-security-core:2.0-RC5"
    ....
}

更新: 看了这个Question

添加了

static mapping = {
    id composite: ['objectA', 'date', 'name']
}

但是,这似乎不起作用。

0 个答案:

没有答案