按无id的grails域保存数据

按无id的grails域保存数据,grails,Grails,我有一个域类,其中我将id声明为字符串,并且在映射中id映射为ROWID。我不希望该id参与插入操作。 但是,在通过域进行持久化时,我会遇到如下错误: com.bt.viewer.tciruitDetails条目中的空id 有人能帮忙吗:我需要在id中提到数据库列吗? 在gorm查询中,插入sql正在为id生成hibernate序列,我无法使用该序列 对于任何列 我可以将id分配给数据库中的一个主键列,但id只采用hibernate序列,所以我不能将id映射到任何列。我不能通过添加新列来改变表以

我有一个域类,其中我将id声明为字符串,并且在映射中id映射为ROWID。我不希望该id参与插入操作。 但是,在通过域进行持久化时,我会遇到如下错误: com.bt.viewer.tciruitDetails条目中的空id 有人能帮忙吗:我需要在id中提到数据库列吗? 在gorm查询中,插入sql正在为id生成hibernate序列,我无法使用该序列 对于任何列

我可以将id分配给数据库中的一个主键列,但id只采用hibernate序列,所以我不能将id映射到任何列。我不能通过添加新列来改变表以容纳id值

解决办法是什么?请帮忙


谢谢..

您需要覆盖Hibernate的默认标识生成器-这是Grails文档中的相关章节,它基本上将您指向Hibernate文档

从我收集的信息来看,您需要实现一个定制的
IdentifierGenerator
,就像人们为他们的项目所做的那样


我不知道您为什么要定义自己的ID,但也许以下更简单的解决方案也适用于您:让Grails/Hibernate将其ID存储到另一列中(比如
Hibernate\u ID
)然后,通过将
id列:“hibernate\u id”
插入
mapping
块(请参阅指向Grails文档的链接),您可以出于自己的目的使用
id
。不过,您需要在任何地方使用
DomainClass.findById()
而不是
DomainClass.get()

只是为了澄清:您正在尝试为
id
列生成自己的值,并且根本不希望Hibernate在任何名称下生成自己的id?是的。我想在id列中插入一些字母数字值,不是休眠序列。