Grails:域属性默认是强制性的,不生成Id

时间:2015-03-10 03:26:21

标签: grails-domain-class

我是Grails的新手。我安装了Grails 2.4.4版本和Spring Tool Suite。 我创建了Grails项目和域,控制器类。但是我默认情况下将所有字段都设为强制字段,并且不生成“id”。需要一些帮助。

域类:

package org.example.pomorodo

class Task {

String summary
String details
Date dateCreated
Date deadLine
Long timeSpent=0L 
    static constraints = {      
    }
}

控制器类:     包org.example.pomorodo

class TaskController {
   static scaffold =Task
}

2 个答案:

答案 0 :(得分:0)

你的意思是说你无法访问" id"使用GORM保存域对象后的属性?或者只是生成的代码没有" id"属性明确定义?如果是后者,请不要担心。 " id"属性由框架的元编程黑魔法自动注入。如果它是前者,那么其他的东西就错了,因为你肯定应该有一个有效的" id"保存域对象后。

在必填字段上:使用约束块将字段切换为nullable = true。例如:

package org.example.pomorodo

class Task {

String summary
String details
Date dateCreated
Date deadLine
Long timeSpent=0L 
    static constraints = {      
       summary(nullable:true)
       details(nullable:true)
    }
}

您还可以全局修改默认约束。有关详细信息,请参阅constraints documentation

答案 1 :(得分:0)

最近我得到了一个关于映射没有任何id和版本的数据库表的查询。例如,该表有两个varchar字段用户名和密码,仅此而已。 虽然这对我来说很奇怪,但是表没有id字段。好处是用户名是表中的主键,这不是自动递增用户希望通过自己的方法创建它。 关于Grails的好处是,在大多数情况下,您可以在文档http://grails.org/doc/latest/中得到答案。所以在这种情况下我们只需要像这样更改grails域中的id字段

class Test {     字符串用户名     字符串密码

static mapping = {
    id name: 'username'
    version false
    id generator: 'assigned'
}
static constraints = {
    username(nullable: true)
}

}