用hibernate操作oralce的序列应该比较困难吧,有这个必要吗? 这个偶也不懂,帮你顶了。

解决方案 »

  1.   

    我也想知道啊oracle有一个叫sequence的,用这个可以生成序列
     
    但是用hibernate怎么操作啊?
      

  2.   

    如果Hibernate中hbm.xml指定ID是用序列,你也建好了序列,则在插入数据的时候Hibernate自动会从序列中取数据,如果你单独需要序列值,则需要从Hibernate的Session中先取出Conn,然后自己写SQL取了!
      

  3.   

    你只需要将id字段的生成方式设定为native,hibernate将在做schemaExport的时候,生成一个hibernate_sequence,接下来的事情只需要Session.save(Object);hibernate帮你做了其他处理
      

  4.   

    cm4ever(小P) :
    怎么知道它是用哪个sequence呢?如果我有多个表曾在sequence,而每个表用的sequence是不一样的,怎么处理呢?在哪个地方设置它们的对应该关系呢?我现在老出现这样的错误:
    net.sf.hibernate.util.JDBCExceptionReporter  ORA-02289: 序列(号)不存在
    hbm中的代码为:
    <id
    column="LOGID"
    name="Logid"
    type="integer"
    >
    <generator class="native" />
    </id>
    在Oracle中有一sequence:wjjsjxcwrzb_LogId我怎么将它们关联起来呢?望指教,急急急啊!
      

  5.   

    hibernate参考文档里面就有:5.1.4.4. 标识字段和序列(Identity columns and Sequences)
    对于内部支持标识字段的数据库(DB2,MySQL,Sybase,MS SQL),你可以使用identity关键字生成。对于内部支持序列的数据库(DB2,Oracle, PostgreSQL, Interbase, McKoi,SAP DB),你可以使用sequence风格的关键字生成。这两种方式对于插入一个新的对象都需要两次SQL查询。 <id name="id" type="long" column="uid">
            <generator class="sequence">
                    <param name="sequence">uid_sequence</param>
            </generator>
    </id>
      

  6.   

    对的,是 cm4ever(小P) 那样的:
    <generator class="sequence">
    <param name="sequence">wjjsjxcwrzb_LogId</param>
    </generator>