可以将主键的生成方式设置问squence

解决方案 »

  1.   

    由于我数据库采用的是oracle数据库,所以主键不能设置为自增当然可以设置为自动增长了,使用 identity 类型并指定 sequenceName 就可以了!
      

  2.   

    有关主键问题,你用oracle那就用sequence就可以了
    其他的如mysql,sqlserver就用自增长类型
      

  3.   

    安装有oracle数据库,创建数据库,总是要创建一个主键ID,唯一标示各条记录,但oracle不支持自动编号,所以还得创建一个SEQUENCE(序列)语句如
         create sequence bign nocycle maxvalue 9999999999 start with 1;//增加数据insert into table (ID,..) values(bign.nextval,..)
         在hibernate中的映射文件可这么写
       <id name="id" type="java.lang.Long" column="ID">
                <generator class="sequence" >
                     <param name="sequence">bign</param>
                </generator>
       </id>或  <id name="id" type="java.lang.Long" column="ID">
                <generator class="increment" >
      </id>
    另外:increment 用与为long,short或者int类型生成唯一标示。只有在没有其他进程忘同一张表中插入数据时才能使用。在集群下不要使用
      

  4.   

    呵呵
    其实大家都没理解我的意思。
    我是说在hibernate多对多的关系中,中间表是不需要生成配置文件和POJO的。
    所有如果存在ID主键,hibernate是不能向中间表插入主键的
    除非多对多配置成两个1对多,并且生成中间表的配置文件
    这样不是我想要的。
    现在我搞明白了
    如果中间表生成配置文件,那配置成2个一对多进行关联。
    如果单纯的多对多关系不生成中间表的配置文件那中间表就不要ID主键,只要userid和roleid两个外键。