2012-03-12 51 views
0

在Oracle中,我們可以創建一個更新查詢,它將使用RETURNING子句返回更新的記錄。在Hibernate中創建UPDATE RETURNING查詢

Hibernate中是否有類似的功能?

+0

保存後的對象是否已經更新? – DrColossos 2012-03-12 18:25:00

+0

是更新後保存的對象已更新。 – Ishmael 2012-03-12 18:32:25

+0

我想我們的情況是更多的設計方法。這些請求通過webservice調用啓動,然後更新數據庫。我們決定將任何更新或創建的對象以適當的HTTP狀態返回給用戶。在我們的代碼中,我們選擇跟蹤Web堆棧上下的更新。 – hypno7oad 2012-03-12 18:43:47

回答

0

除了數據庫生成的值有明顯沒有必要,因爲該對象傳遞給Session.saveOrUpdate()更新實例來讓Hibernate返回更新實例。數據庫生成的值(序列,觸發器,默認值等)將在Session.saveOrUpdate之後被設置爲,如果它們被相應地註釋(或定義在XML映射文件中)。

對於identifier values使用JPA @javax.persistence.GeneratedValue註釋與JPA @javax.persistence.Id註釋一起使用。對於simple properties使用本地Hibernate @org.hibernate.annotations.Generated註釋(afaik沒有相應的JPA註釋)。

Hibernate檢索生成的標識符值取決於生成策略和/或數據庫方言。對於簡單的屬性,Hibernate通過在INSERTUPDATE之後的id語句執行額外的SELECT