我有一个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']
}
但是,这似乎不起作用。