0

为了将我的 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 对域来说是唯一的?

4

1 回答 1

1

正如 Elias 所说,如果您使用数据库序列,您可能无法保证它们绝对是连续的。NOCACHE在某些数据库(如 Oracle)中,您可以通过对序列进行设置或其他设置来稍微控制它。这仍然不能保证没有间隙,如果你有很多插入,它会影响性能。

您还可以为您关心此行为的域类设置不同的顺序。

class User {
    static mapping = {
        id generator: 'sequence', params:[sequence:'seq_user']
    }
}
于 2013-04-19T17:46:55.173 回答