【问题标题】:DB backup problem with Spring/Hibernate GenerationType.AUTOSpring/Hibernate GenerationType.AUTO 的数据库备份问题
【发布时间】:2011-01-02 11:30:26
【问题描述】:

我使用 Spring/Hibernate Dao 将我的对象保存在数据库中。现在我必须备份我的应用程序中的所有数据库。现在,当我尝试回读备份时,我的应用程序崩溃了。现在我发现了这个崩溃的问题。它是 Hibernate,当我要保存时,它会自动为我的对象创建一个新 ID。

例如,我在备份文件中保存了 ID 为 4 的对象 a。

现在我读取备份文件。从旧东西中清理我的数据库。将此对象保存回 db。现在我的对象 id 是例如 5。但它必须是 4。如何防止 hybernate 自动生成我的 id 值?

我应该写一个额外的 JDBCDao 来导入吗?

这是我的 id 模型属性

@ID  
 @Column(name="ID")   
 @GeneratedValue(strategy=GenerationType.AUTO)
 private Long id;

感谢您帮助和原谅我糟糕的英语。

【问题讨论】:

    标签: java spring jpa dao


    【解决方案1】:

    我想到了四个选项:

    • 使用数据库实用程序进行备份(例如在 mysql 的情况下 - 使用 mysqldump)并通过数据库实用程序再次恢复它,无需休眠
    • 由于上述似乎不是一个选项现在,您可以根据您的备份生成 SQL 查询(向我们展示您的备份格式)并针对数据库(同样没有休眠)
    • 如果您不想使用 SQL 选项并想在休眠中执行此操作,请迭代您的对象并一一保存。保存后立即使用正确的 ID 更新对象(使用 .persist() 或使用 HQL)。
    • 您可以在导入时暂时删除GeneratedValue 注释。

    话虽如此,我认为(同样,取决于您的格式)如果参照完整性完好无损,ID 是什么那么并不重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      相关资源
      最近更新 更多