Grails 唯一约束无法更新
Posted
技术标签:
【中文标题】Grails 唯一约束无法更新【英文标题】:Grails unique constraint fail to update 【发布时间】:2015-12-10 15:59:11 【问题描述】:我知道这个问题与其他帖子有关,但没有一个能解决我的问题。
我正在使用Grails 2.5.1
,使用oracle 数据库。
我收到了domain class CardMaster
。它包含user_id, card_no and password
。
在约束下,我将card_no
定义为unique
by user_id
。
然后我想使用user_id
作为Primary Key
,所以我将id
映射为:
id name:'user_id', generator: 'assigned'
但是,当我找到并更新 findByUser_id
的记录时。我有一个错误。它说card_no
必须是唯一的并且无法保存。
我阅读了other posts,他们说更改主键似乎没有映射为id
。如果我通过以下方式更改映射:
id column:'user_id', generator: 'assigned'
它成功保存,但在表中,出现了 2 个名为 user_id
的列,1 个为 user_id
提供,其他为 id
。
我们将不胜感激任何解决方案。
谢谢。
更新
以下是域类的完整代码:
class CardUserMaster
String card_no
String user_id
String password
static constraints =
card_no(nullable: false, blank: false, maxSize: 19, unique: 'user_id')
user_id(nullable: false, blank: false, maxSize: 10, minSize: 6)
password(nullable: false, blank: false, maxSize: 32, minSize: 8)
static mapping =
table('CARDUSER_MASTER')
id name: 'user_id'
version false
id generator: 'assigned'
【问题讨论】:
嗯,同一个表中不可能有两个同名的列。其他事情正在发生。如果您发布域类的代码,将会有很长的路要走。 给你。伊曼纽尔·罗莎。 【参考方案1】:将您的映射更新为:
static mapping =
table('CARDUSER_MASTER')
id column:"user_id", name: 'user_id', generator: 'assigned'
version false
我们需要提供主键所指的 db 中的实际列名以及我们想要一起使用的主键的自定义名称。
【讨论】:
在相同的情况下遇到相同的问题,添加列为我解决了。以上是关于Grails 唯一约束无法更新的主要内容,如果未能解决你的问题,请参考以下文章
冲突部分索引的 Postgres 唯一或排除约束无法更新票证
即使 grails-wrapper.jar 更新,Grails 也无法工作