Hibernate: select hibernate_sequence.nextval from dual

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> 


情况2:

    在配置主键生成策略为native(根据方言),sequence(oracle等),identity(mysql等),即自动生成时候将主键设置成了String类型。

情况3:

    配置主键为native的时候缺少sequence(博主就是这种情况),添加sequence即可,例子来自网络。

1.3例子

CREATE SEQUENCE HIBERNATE_SEQUENCE MINVALUE 90000 MAXVALUE 999999999999999999999999 INCREMENT BY 1 NOCYCLE;






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章