文章出處

今天犯了個錯誤

  generator節點class屬性有這么幾個值(主鍵生成策略方案):

  assigned:由用戶指定主鍵值

  sequence:由oracle序列生成

  increment:對類型為long,short,int的主鍵,以自增長的方式生成主鍵值,增量為1

  identity:在oracle中沒用,因為他是支持標志列的數據庫能夠用的

  native: 由hibernate決策(大家自己測吧)

  當我們配置節點屬性為assigned時,并且沒有為主鍵賦值:

  

  當節點屬性為increment時我們運行:

      

  可以看到執行了查詢語句,他在查詢最大的gradeid,而我的表為空表,所以查不到任何值,并沒有執行更新或者插入的操作

  transction錯誤可以忽略,這個錯誤是因為之前測試的時候沒有begintransaction(),在save前面加上session.beginTransaction();就能解決

  解決方案:

  • 在執行save()操作前,給id賦值
  • 更改生成策略為sequence(前提有序列)
  • 在表不為空的前提下使用increment

文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()