問題:如何在Hibernate中指出[ref]是真正的主鍵,但是當更新記錄時我希望它在[objectID上應用.update或.saveOrUpdate ]。休眠:如何更新不同的ID
上下文:我有一個場景,我正在從web服務同步信息到表中。在導入對象時,我保留對象唯一引用,這使我能夠再次運行腳本並更新本地保存的對象信息。
示例:由三個字段組成的簡單表格。
[參考文獻] [的objectID] [objectTitle]
[參考文獻] = A主鍵。新記錄插入時增量。用於內部查找和關係關聯。
[objectID] =對象本身的唯一標識符。
[objectTitle] =綁定到objectID的信息。這可能會更新。
我有點困惑如何在Hibernate中設置它。似乎我有將[ref]設置爲@Id,因此它將使用生成器自動遞增。問題是我想使用[objectID]更新信息,而不是[ref]。
是否有更高效的方法來執行此操作?如果您要同步5,000多條記錄,每個記錄的開銷都很大。在更新哪個字段用作參考密鑰時,是否沒有辦法指示? – user649716
是的,有。使用更新查詢。但是這會導致代碼看起來更像是JDBC代碼而不是Hibernate代碼,可能效率會更低(甚至在某些情況下可能效率會降低),而且更具有限制性。請參閱http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#batch-direct –
您當然也可以使用'where m.objectId in:listOfObjectIds一次加載多個實體'子句,如果你需要一次修改很多實體。 –