2013-02-27 49 views
2

我正在從文本文件(一個招標文件)源中加載標書列表,我想將其存儲到數據庫中。我有表address_point,街道,城市和國家,其中address_point是從許多表(組織,招標,...)。休眠 - 重複鍵上的自動填充記錄ID

Scheme

當腳本加載數據,並嘗試保存相同的地址在失敗,錯誤一個交易 - 重複鍵。

例如,腳本將添加新的投標並且投標由新公司所有。新招標公司和新公司具有相同的地址,並且這兩個對象被插入到一個事務中,並且它們都包含相同的城市已經存儲在數據庫中的地址,所以首先我必須找到該組織的城市並將其替換爲找到的對象或設置主要關鍵,並做同樣的投標。

下一個示例腳本將添加新的投標和新的組織,而不存儲在數據庫中的城市,我必須檢查城市是否在數據庫中。下一步是我必須對這兩個城市進行比較,如果城市相同,避免重複密鑰,那麼從這兩個城市制造一個對象。

但我有三次以上的refenreces來處理投標,組織,旅遊等交易中的點。這兩個例子僅適用於不適用於國家,地區的城市......因此,制定一系列條件非常麻煩。

如何解決這個問題最有效的方法是什麼?我已經定義了isEqueal和hashCode,但我已經讀過這些方法僅適用於集合。

回答

0

我不認爲isEqual和hashCode是你在這裏尋找的必然,實現Comparable接口可能更適合。

我從你的文章中得到的印象是,你正在用相同的值創建新的(尚未附加到hibernate會話)對象,然後嘗試保存它們。也許您可以在保存之前識別這些重複的案例,並且在保存之前將您的公司和招標引用同一個POJO。