假设我有一个名为TEST_SEQ的序列,选择它的下一个值的正确方法是什么?这不起作用:
select next value for TEST_SEQ
可能是因为它需要一个"FROM“子句。查看hibernate中的HSQLDialect.getSequenceNextValString(),我看到了以下内容:
"select next value for " + sequenceName + " from dual_" + sequenceName
在我的例子中,这将导致类似如下的结果:
select next value for TEST_SEQ from dual_TEST_SEQ
这对2.0.0-rc8不起作用(我只假设它在2.0之前的版本中有效--还没有得到验证)我遇到了一个解决方案,它涉及创建一个只有1行的简单表,称为DUAL,在这种情况下它可以工作(oracle风格):
select next value for TEST_SEQ from DUAL
但是hsqldb没有提供这个开箱即用的表,而且我不确定如何才能让hibernate在“第一次启动”时生成这样一个表。
我在想,一定有一种方法可以让序列的下一个值开箱即用,而我只是错过了它。有什么想法吗?
发布于 2020-10-21 02:39:33
也许hibernate是在动态创建这些dual_xx表?真奇怪。
无论如何,你的方法似乎适用于hsqldb 2.3.2:
select next value for <sequence name>;
但是你不能给它起别名,为此我不得不这么做:
select next value for <sequence name> as <my name>, 3
然后别名就起作用了,不需要双重别名。call next value
我似乎不能化名..。
https://stackoverflow.com/questions/2340037
复制相似问题