Hibernate怎樣獲取其用Oracle sequence自動生成的主鍵

          Posted on 2009-03-11 13:49 Robert Su 閱讀(5186) 評論(6)  編輯  收藏 所屬分類: Java

          Case:
          action需要同時向兩張表中添加數據
          比如一個是class 一個是video
          每次都是一對多的關系~每一次插入的Video的classID是相同的

          video表中有個字段是classId 對應的是的class中的主鍵   ID

          ID是sequence生成的
          那我批量插入video的時候怎樣獲取class_ID_sequence生成的id值呢?

          思路:
          我觀察到Hibernate做插入的時候每次插入記錄的時候會首先查詢sequence

          select CLASS_ID_SEQ.nextval from dual
          那怎樣獲取到這個select的值呢?

          獲取到這個值可以直接給
          video.setClassID(classID)

          請大家討論并指教~

          ***************整理如下*******************
          執行完這句sql語句select CLASS_ID_SEQ.nextval from dual之后,class這個對象已經執行過setId方法,所以當前它的id值可以獲得getId方法得到;
          可以直接在在action這樣寫
          Long id=class.getId();


          感謝隔葉黃鶯

          Feedback

          # re: Hibernate怎樣獲取其用Oracle sequence自動生成的主鍵  回復  更多評論   

          2009-03-11 13:56 by 隔葉黃鶯
          還要討論什么呢?是這樣的啊。
          對象一持久化使給 OID 賦了值,如果使用映射擊的關聯關系,這些都是 Hibernate 自動幫你完成的。

          # re: Hibernate怎樣獲取其用Oracle sequence自動生成的主鍵  回復  更多評論   

          2009-03-11 14:13 by Robert Su
          @隔葉黃鶯

          現在的問題是怎樣獲得這個seq生成的ID值

          知道那是自動的啊~可是您沒理解我提的問題

          # re: Hibernate怎樣獲取其用Oracle sequence自動生成的主鍵  回復  更多評論   

          2009-03-11 14:33 by 隔葉黃鶯
          對象持久化后,直接取那個持久對象的 OID 就是
          比如
          User user = new User();
          .......
          ..........
          session.save(user);

          user.getId() 就是了。

          save() 方法的返回值是一個序列化對象,那個也就是主鍵,即 user.getId() 值。

          # re: Hibernate怎樣獲取其用Oracle sequence自動生成的主鍵  回復  更多評論   

          2009-03-11 14:51 by Robert Su
          @隔葉黃鶯
          好~謝謝您了

          # re: Hibernate怎樣獲取其用Oracle sequence自動生成的主鍵  回復  更多評論   

          2009-03-11 19:29 by Java_do
          @隔葉黃鶯

          同解!save之后的對象是一個持久化對象,代表的是數據庫中的一條記錄,
          那么自然含有ID了

          # re: Hibernate怎樣獲取其用Oracle sequence自動生成的主鍵  回復  更多評論   

          2009-03-11 21:58 by 隔葉黃鶯
          @Java_do
          是要注意那個 save() 方法的返回值。

          posts - 103, comments - 104, trackbacks - 0, articles - 5

          Copyright © Robert Su

          主站蜘蛛池模板: 平湖市| 肇州县| 晋宁县| 长寿区| 南雄市| 咸阳市| 得荣县| 维西| 吉木乃县| 门头沟区| 桑日县| 西昌市| 鱼台县| 康保县| 九寨沟县| 肥东县| 灵寿县| 漠河县| 芒康县| 新巴尔虎右旗| 察雅县| 曲阳县| 淄博市| 普宁市| 凉山| 阜平县| 荆门市| 德州市| 昭觉县| 康马县| 大英县| 察隅县| 湄潭县| 巫溪县| 且末县| 天柱县| 吉水县| 五原县| 林周县| 广东省| 呼和浩特市|