hibernate的merge和limit用法

merge:
今天在做數據的update操作時,遇到了錯誤:a different object with the same identifier value was already associated with the session
錯誤原因:session中有兩個相同id的實例,無法進行update操作。
初步設想:把session緩存中的某個對象remove掉,但是發現session中並沒有remove這個方法,只有一個delete方法,而delete方法執行的是對數據庫的delete操作,這個與我想要的效果不一樣。這個設想行不通。
實際解決方案:使用merge方法。
執行merge方法肯定會根據對象的id執行一次select方法,有三種情況:
①:當select出來有對象,且兩個對象屬性相同時
不執行任何操作。
②:當select出來有對象,且兩個對象屬性不相同時
執行update操作
③:當select出來沒有對象
執行insert操作。

limit:
hql語句不支持limit語法,取而代之的是利用另外兩個方法實現。
setFirstResult(start); //開始位置
setMaxResults(limit); //取的數量
例如
sql:select * from user order by id desc limit 10,3;
hql: session.createQuery(
“from User order by id desc”)setFirstResult(10); .setMaxResults(3);
這兩個的實際語句操作效果是一樣的。

發佈了26 篇原創文章 · 獲贊 11 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章