我正在从文本文件(一个招标文件)源加载招标列表,我想将其存储到数据库中。我有表address_point,街道,城市和国家,其中address_point来自许多表(组织,招标,......)。
当脚本加载数据并尝试在一个失败时保存相同地址的错误 - 重复键。
例如脚本将添加新招标,招标由新公司拥有。新的招标和新公司有相同的地址,这两个对象插入一个交易,它们都包含相同的地址,城市已经存储在数据库中,所以首先我必须找到这个组织的城市,并用找到的对象替换它或设置主要关键并做同样的招标。
下一个示例脚本将添加新的招标和新组织与城市没有存储在数据库中我必须检查城市是否在数据库中。下一步是我必须比较这两个城市,如果城市等于避免重复密钥,则从中创建一个对象。
但是,我在招标,组织,旅游等一项交易中有超过3个refenreces来解决积分问题。这两个例子仅适用于不适用于国家,地区的城市......因此,制定一套条件非常混乱。
如何解决这个问题最有效的方法是什么?我已经定义了isEqueal和hashCode,但我已经读过这些方法仅适用于集合。
答案 0 :(得分:0)
我不认为isEqual和hashCode是你在这里寻找的,实现Comparable接口可能更适合。
我从上面的帖子中得到的印象是,您正在使用相同的值创建新的(尚未附加到hibernate会话)对象,然后尝试保存它们。也许您可以在保存之前识别这些重复的案例,并在保存之前让您的公司和招标参考相同的POJO。