【发布时间】:2013-04-19 11:33:04
【问题描述】:
为了将我的 grails 数据库保存到文件而不是内存中,我刚刚将 grails 应用程序中的数据源更改为:
development {
dataSource {
dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
url = "jdbc:h2:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
}
}
如在线教程所示。
但是,当我创建一个User 对象并将其保存到数据库时,它可能有一个id,比如1。如果我做一些其他操作然后创建另一个User 对象被赋予ID,例如14,但绝不是2。
我知道这可能与 Hibernate 为对象创建 ID 而与域类无关?
有没有办法让 id 对域来说是唯一的?
【问题讨论】:
-
您所说的“域独有”是什么意思?
-
所以当
user对象被添加时,这些对象被分配了 ID,例如 1,2,3,4... 而不是创建user,被分配 ID 1,然后是 @ 987654333@ 正在创建并被分配 2,另一个user正在添加,将被分配 ID 3 等等 -
嗯,序列通常不保证增量总是一个。这个问题是相关的:stackoverflow.com/questions/7171626/…stackoverflow.com/questions/8333998/…
-
请分享您的域类定义。
-
默认情况下,hibernate 为所有 id 生成一个序列。您可以为映射闭包中的每个类指定一个单独的序列(参见凯利的答案)