環境:jdk1.6
框架:SSH
服務器:resin
首先交代下大概業務,實體A(某一行業屬性配置)、實體B(行業功能,such as 發送短信的機制)、其中A種使用聯合主鍵;
行業初始化時,保存當前行業的機制(保存B對象),同時保存該機制的屬性配置(保存A對象);
以上過程通過saveOrupdate操作完全沒有問題;
但在相同行業下新增一個機制B ; A也隨之增加,走之前的接口操作新對象的時候只會更新之前的B對象,而不是新增一條記錄,怎麼破!!!完全存不上他的相關屬性配置呀!
那麼問題來了.....
因爲A使用的聯合主鍵,saveOrupdate的時候hibernate會根據主鍵去查找,如果對象存在不進行sava操作,而是進行update操作,但是直接調用hibernate的save的時候因爲
他的主鍵已經存在了,所有會報主鍵衝突。。。。
最後沒辦法,只能在A中又加入另一個聯合主鍵,新增主鍵爲行業功能ID,因爲B中新增功能的ID不重複,所以就解決這個問題。。。。