本文介绍了"正确"在HSQLDB 2.0.0-rc8中选择下一个序列值的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有一个序列,名为TEST_SEQ,那么选择下一个值的正确方法是什么?
这不起作用:
为TEST_SEQ选择下一个值
可能是因为它期望有一个FROM子句。
在hibernate中查看HSQLDialect.getSequenceNextValString()我看到这个:
select next value for+ sequenceName + from dual_+ sequenceName
在我的情况下会导致类似的结果:
从dual_TEST_SEQ中为TEST_SEQ选择下一个值
为2.0.0-RC8工作(我只假设这在2.0版以前的版本 - 未经验证)
我遇到了一个解决方案,涉及创建一个简单的表,称为DUAL,在这种情况下,这将工作(oracle风格):
从DUAL选择下一个TEST_SEQ值
但是hsqldb并没有附带这个表格,我不知道如何让hibernate在第一次启动时生成这样的表格。
我认为必须有一种方法来获得开箱即用的下一个值,并且即时忽略它。
的任何想法?
解决方案
虽然表示:
正确的方式(因为更简单,因为不涉及表像HSQLDB不具备的DUAL DUAL表一样):
调用[sequence_name]的下一个值;
这出现在,这实际上Hibernate是如何处理最近的 HSQLDialect
Hibernate Core版本(请参阅).
And indeed, this is what I see in the HSQLDialect
of hibernate-core-3.3.0.SP1.jar
:
public String getSequenceNextValString(String sequenceName) {
return "call next value for " + sequenceName;
}
So my advice is: upgrade to a newer version of Hibernate, you are very likely using Hibernate Core 3.2.5 or prior.
这篇关于"正确"在HSQLDB 2.0.0-rc8中选择下一个序列值的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!