gpt4 book ai didi

java - Spring/Hibernate GenerationType.AUTO 的数据库备份问题

转载 作者:行者123 更新时间:2023-11-30 05:14:41 26 4
gpt4 key购买 nike

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

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

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

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

这是我的 id 模型属性

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

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

最佳答案

我想到了四个选择:

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

总而言之,我认为(再次取决于您的格式)如果引用完整性完好无损,ID 是什么并不重要。

关于java - Spring/Hibernate GenerationType.AUTO 的数据库备份问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2020278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com