数据库ID递增多个

时间:2013-04-19 11:33:04

标签: hibernate grails

为了将我的grails数据库保存到文件而不是内存,我刚刚将我的grails应用程序中的数据源更改为:

development {
    dataSource {
        dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
        url = "jdbc:h2:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
    }
}

如在线教程所示。

但是,当我创建一个User对象并将其保存到数据库时,它可能有一个id1。如果我执行其他操作然后创建另一个User对象,则会ID,例如14,但永远不会2

据我所知,这可能与Hibernate有关,无论域类如何都为对象创建ID?

有没有办法让id成为域名独有的?

1 个答案:

答案 0 :(得分:1)

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

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

class User {
    static mapping = {
        id generator: 'sequence', params:[sequence:'seq_user']
    }
}