为了将我的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成为域名独有的?
答案 0 :(得分:1)
正如Elias所说,如果您使用数据库序列,您可能无法保证它们绝对是顺序的。在某些数据库(如Oracle)中,您可以通过在序列上设置NOCACHE
或其他一些设置来稍微控制它。这仍然不能保证没有间隙,如果你有很多插入,它可能会影响性能。
您还可以为关注此行为的域类设置不同的序列。
class User {
static mapping = {
id generator: 'sequence', params:[sequence:'seq_user']
}
}