【问题标题】:Ignore existing items and insert remaining items into databases using hibernate忽略现有项目并使用休眠将剩余项目插入数据库
【发布时间】:2012-09-28 19:17:06
【问题描述】:

我有文本区域,我可以在其中输入要阻止的站点名称。所有输入的站点都存储到 SITES 表中。如果输入的任何站点都存在于 SITES 表中,我们应该忽略这些站点并插入剩余的站点。

我们应该如何使用hibernate来做到这一点?

【问题讨论】:

    标签: hibernate dao


    【解决方案1】:

    执行第一个查询:

    select site.name from Site site where site.name in (:enteredSiteNames)
    

    然后从输入的站点列表中删除所有找到的站点(因为它们已经在数据库中)。

    然后遍历剩余的站点,并将它们持久化。

    【讨论】:

    • 感谢您的回复..我目前正在使用此查询,但我正在寻找替代解决方案。很抱歉在我的问题中没有提到这一点。hibernate 是否提供任何解决方案来处理此类情况?
    • 它不提供上述以外的任何东西。
    【解决方案2】:

    在 Hibernate 或数据库级别中,您可以(并且可能应该)做的所有事情就是向包含站点名称的字段添加唯一约束。这将确保在添加重复项时引发异常。但是为了防止这种异常,您必须检查应用程序代码中预先存在的站点,例如通过对要添加的每个站点使用查询或一次加载完整的表,然后检查每个输入的站点名称。

    请注意,您可能需要对网站名称进行某种规范化,例如修剪空格或转换为小写,以确保您识别出任何重复项(例如,www.EXAMPLE.comwww.example.com 可能应该被视为相等)。在 Hibernate Validator 中,您可以使用模式约束来强制执行此规范化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多