我有域类,其中我将id声明为字符串,并且映射id映射到ROWID。我不希望该id参与插入操作。 但是,在通过域持久化时,我收到的错误如下: com.bt.viewer.TCircuitDetails条目中的null id 任何人都可以提供帮助:我是否需要为id提及数据库列? 在gorm查询中,插入sql正在为id生成hibernate序列,这是我无法使用的 对于任何一栏。
我可以将id分配给数据库中的一个主键列,但id只占用hibernate序列,所以我不能将id映射到任何列。我不能通过添加新列来改变表以容纳id值。
解决方案是什么。请帮忙
谢谢..
答案 0 :(得分:0)
你需要覆盖Hibernate的默认身份生成器 - here是Grails文档中的相关章节,它基本上指向了Hibernate文档。
根据我收集的内容,您需要实施自定义IdentifierGenerator
,类似于this人为其项目所做的事情。
我不知道您为什么要尝试定义自己的ID,但以下更简单的解决方案也可能对您有用:让Grails / Hibernate将其ID存储到另一列(比如hibernate_id
)然后,您可以通过将id
插入id column: 'hibernate_id'
块来将mapping
用于您自己的目的(请参阅Grails文档的链接)。不过,您需要在任何地方使用DomainClass.findById()
代替DomainClass.get()
。