Java Spring/Hibernate GenerationType.AUTO的数据库备份问题
我使用Spring/Hibernate Dao将对象保存在数据库中。现在,我必须备份应用程序中的所有数据库。现在,当我试图读取备份时,我的应用程序崩溃了。现在我发现了这次撞车的问题。它是Hibernate,当我想保存时,它会自动为我的对象创建一个新ID 例如,我在备份文件中保存了Id为4的对象a 现在我读了备份文件。清理我的数据库从旧的东西。将此对象保存回数据库。现在我的对象id是示例5。但它必须是4。如何防止hybernate自动生成我的id值 我应该为导入编写额外的JDBCDao吗 这是我的id的Model属性Java Spring/Hibernate GenerationType.AUTO的数据库备份问题,java,spring,jpa,dao,Java,Spring,Jpa,Dao,我使用Spring/Hibernate Dao将对象保存在数据库中。现在,我必须备份应用程序中的所有数据库。现在,当我试图读取备份时,我的应用程序崩溃了。现在我发现了这次撞车的问题。它是Hibernate,当我想保存时,它会自动为我的对象创建一个新ID 例如,我在备份文件中保存了Id为4的对象a 现在我读了备份文件。清理我的数据库从旧的东西。将此对象保存回数据库。现在我的对象id是示例5。但它必须是4。如何防止hybernate自动生成我的id值 我应该为导入编写额外的JDBCDao吗 这是我的
@ID
@Column(name="ID")
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
谢谢你的帮助,我的英语很差。我想到了四个选择:
- 使用数据库实用程序进行备份(例如,对于mysql,使用mysqldump),并通过数据库实用程序再次恢复备份,而不使用hibernate
- 由于上述内容现在似乎不是一个选项,因此您可以根据备份生成SQL查询(向我们显示备份的格式),并根据数据数据库批量执行它们(同样没有hibernate)
- 如果您不想使用SQL选项,并且希望在hibernate中执行此操作,请迭代对象并逐个保存它们。保存后,立即使用正确的ID更新对象(使用
或使用HQL).persist()
- 您可以在导入时临时删除
注释GeneratedValue