Hibernate中的实体类中的非主键字段,能不能调用oracle的sequence来自动生成序号,然后自动插入数据库 例:这样写运行报错
@Column(name = "INDEXID", nullable = false)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="S_RECOMMEND_indexID")      
        @SequenceGenerator(name="S_RECOMMEND_indexID",allocationSize=1,initialValue=1, sequenceName="S_RECOMMEND_indexID")   
private Long indexID;例:这样写运行正确
@Column(name = "INDEXID", nullable = false)
        @Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="S_RECOMMEND_indexID")      
        @SequenceGenerator(name="S_RECOMMEND_indexID",allocationSize=1,initialValue=1, sequenceName="S_RECOMMEND_indexID")   
private Long indexID;

解决方案 »

  1.   

    最简单的用序列:
    在oracle里定义一个序列SEQ_UNIT
    <class name="com.egf.pojos.Unit" table="UNIT" dynamic-insert="true" dynamic-update="true"> 
            <id name="id" type="java.lang.Long">
                <column name="ID" precision="22" scale="0" />
                <generator class="sequence">
    <param name="sequence">SEQ_UNIT</param>
    </generator>
            </id>
      

  2.   

    呵呵,看错了,你说的不是主键,应该这样
    在配置文件里
    <property name="indexid" formula="(select seq_index.nextval from dual)"/> 
      

  3.   

    能说具体点吗?是哪个配置文件,我上面贴出的代码不是在配置文件中配置的,是在java代码中直接写的javabean与表名映射产生的数据库数据,不需要手工修改配置文件的来生成数据库的表和记录的,要作修改是不是只能修改相应的javabean文件呀!