Hibernate:
select
hibernate_sequence.nextval
from
dual
出现以上错误时,根据网络总结了以下几种情况:
情况1:
使用oracle数据库时,hibernate配置bean文件时,在*.hbm.xml中配置主键生成策略为sequence,却没有指定sequence,例如:
例子来自http://iteye.blog.163.com/blog/static/186308096201301003651896/
1.1列子:
出现这个异常说明你对应映射表里,没有指明序列。解决办法就是指明一个序列,如果没有,就新建一个eg: CREATE SEQUENCE SEQ_TL_COMMON_ITEM INCREMENT BY 1;
原来:
<id name="numitemid" type="java.lang.Integer">
<column name="NUMITEMID" precision="20" scale="0" />
<generator class="sequence">
<param name="sequence"></param>
</generator>
</id>
改成:
<id name="numitemid" type="java.lang.Integer">
<column name="NUMITEMID" precision="20" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_TL_COMMON_ITEM</param>
</generator>
</id>
在配置主键生成策略为native(根据方言),sequence(oracle等),identity(mysql等),即自动生成时候将主键设置成了String类型。
情况3:
配置主键为native的时候缺少sequence(博主就是这种情况),添加sequence即可,例子来自网络。
1.3例子
CREATE SEQUENCE HIBERNATE_SEQUENCE MINVALUE 90000 MAXVALUE 999999999999999999999999 INCREMENT BY 1 NOCYCLE;