我有一个Grails3应用程序,并且想要从用于测试的幼稚增量ID生成切换到来自数据面的序列(我正在使用Oracle 12c)。所以我有这样的代码:
static mapping = {
sort 'name'
version false
id column: 'CONFIGID', name:'id', generator:'sequence', params:[sequence: 'CONFIG_API_SEQ']
}
脚手架工作得很好,但是我为新条目获取的ID值与我期望的不一样-例如,上述序列的LAST_NUMBER
现在为161,而新条目为141, 142、143等。根据我的阅读,Grails在提供外部序列时,默认情况下应使用nextVal
,因此我希望它与select CONFIG_API_SEQ.nextVal as seq from dual;
查询等效,但看起来并非如此。为什么会这样?
我也尝试过使用不同的生成器值或明确声明defaultValue
,但下面列出的所有内容均未更改其行为,144、145等序列继续进行(而不是162、163 ...):
id column: 'CONFIGID', name:'id', generator:'native', params:[sequence: 'CONFIG_API_SEQ'], defaultValue: "nextval('CONFIG_API_SEQ')"
id column: 'CONFIGID', name:'id', generator:'native', params:[sequence: 'CONFIG_API_SEQ']
id column: 'CONFIGID', name:'id', generator:'assigned', params:[sequence: 'CONFIG_API_SEQ']