我有一个java annotized域对象,我想在grails中使用,这很好,但是所有生成的模板都使用Id
作为主键。我尝试在与我的域对象相同的包中创建一个XxxConstraints.groovy
文件,并添加了
mapping = {
id type:'assigned', name:<name of java field>, type: string
}
但这似乎不起作用。
尝试渲染gsp时出现的错误是"class XYZ does not contain field id"
顺便说一句,我使用的是grails 2.1.0。
感谢您的帮助。
答案 0 :(得分:0)
如果您正在谈论脚手架视图,他们只需要id
字段硬编码,例如:<g:hiddenField name="id" value="\${${propertyName}?.id}" />
(来自edit.gsp的示例)。
只需手动修改您的GSP即可使用您的关键字段。
如果它不止一个类并且您不想生成所有视图,则可以使用grails install-templates
将模板安装到项目源中,并修改这些模板以使用您的PK字段。也许用于Java类的Groovy包装器将具有ident()方法,但不确定。
在查看the doc之后,我怀疑mapping{}
DSL是否会起作用。看起来只有constraints
部分可以使用,我相信you only need @Id
annotation。