我有一个域类Zbusiness
,我想将数据插入到zbusiness表中,但我不想使用grails默认id来插入数据,因此我使用了id generator:'assigned', name:'zid',
,因为我已经更换了grails我的zid
表的zbusiness
列的默认主键ID现在我无法将数据插入数据库。它显示Error initializing the application: Error evaluating ORM mappings block for domain [myshaheen.Zbusiness]: null
Message: Error evaluating ORM mappings block for domain [myshaheen.Zbusiness]: null
ids should be manually inserted before save
我应该怎么做?有没有将zid
作为id
传递给zbusiness
表插入数据的方法。
我希望默认id field
将自动替换为zid value
。我将为xshort,xtaxnum ,xadd1 ,xadd2
提供输入,并且zid字段将填充特定值,如{ {1}}
这是我的域类
//Zbusiness.groovy
id
答案 0 :(得分:0)
您的ID映射执行两个功能:
generator:'assigned'
- 表示您将手动设置ID。name:'zid'
- 将ID属性从id
更改为zid
。请注意,name
属性会更改ID 属性而非列。你说:
...因为我用zbusinesstable的zid列替换了grails默认主键id ...
但事实并非如此。相反,您使用id
部分替换了Grails默认ID属性zid
。我说部分是因为您指示Grails使用您的域类中不存在的属性(zid
)。
由于zbusiness
表有一个名为zid
的主键列,要将此列用作域类的ID,您需要使用列属性:< / p>
id generator:'assigned', column:'zid'
通过上面显示的映射,您可以像这样创建Zbusiness
的实例:
def instance = new Zbusiness(id: 123, xshort: 'a', xtaxnum: 'b', xadd1: 'c', xadd2: 'd').save()
在上面的示例中,我使用名为 id 的属性在save()
实例之前手动设置 id 。