【问题标题】:Hibernate - Autofill record ID on duplicate key休眠 - 在重复键上自动填充记录 ID
【发布时间】:2013-02-27 21:12:50
【问题描述】:

我正在从文本文件(一个投标一个文件)源加载投标列表,我想将其存储到数据库中。我有表 address_point、street、city 和 country,其中 address_point 是从许多表(组织、投标等)中引用的。

当脚本正在加载数据并尝试在一个失败并出现错误的事务中保存相同的地址 - 重复键。

例如脚本将添加新的标书,并且标书归新公司所有。新投标和新公司具有相同的地址,这两个对象被插入到一个事务中,并且它们都包含相同的地址哪个城市已经存储在数据库中所以首先我必须找到这个组织的城市并将其替换为找到的对象或设置主要关键并做同样的招标。

下一个示例脚本将添加未存储在数据库中的城市的新投标和新组织,我必须检查该城市是否在数据库中。下一步是我必须比较这两个城市,如果城市相等,则将它们作为一个对象以避免重复键。

但是我有超过 3 个参考来解决投标、组织、旅游等交易中的要点。这两个示例仅适用于城市,而不适用于国家,地区,......所以设置条件有点混乱。

解决这个问题最有效的方法是什么?我已经定义了 isEqueal 和 hashCode 但我读过这些方法仅适用于集合。

【问题讨论】:

    标签: java database hibernate unique-key on-duplicate-key


    【解决方案1】:

    我认为 isEqual 和 hashCode 不一定是您在这里寻找的东西,实现Comparable 接口可能更适合。

    我从您上面的帖子中得到的印象是您正在创建具有相同值的新(尚未附加到休眠会话)对象,然后尝试保存它们。也许您可以在保存之前识别这些重复的案例,并让您的公司和投标人在保存之前引用相同的 POJO。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      • 2011-01-01
      • 2011-04-09
      • 2010-12-26
      • 2012-03-21
      • 2011-12-12
      • 1970-01-01
      相关资源
      最近更新 更多