Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring/Hibernate GenerationType.AUTO的数据库备份问题_Java_Spring_Jpa_Dao - Fatal编程技术网

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

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吗 这是我的

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

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

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

我应该为导入编写额外的JDBCDao吗

这是我的id的Model属性

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

谢谢你的帮助,我的英语很差。

我想到了四个选择:

  • 使用数据库实用程序进行备份(例如,对于mysql,使用mysqldump),并通过数据库实用程序再次恢复备份,而不使用hibernate
  • 由于上述内容现在似乎不是一个选项,因此您可以根据备份生成SQL查询(向我们显示备份的格式),并根据数据数据库批量执行它们(同样没有hibernate)
  • 如果您不想使用SQL选项,并且希望在hibernate中执行此操作,请迭代对象并逐个保存它们。保存后,立即使用正确的ID更新对象(使用
    .persist()
    或使用HQL)
  • 您可以在导入时临时删除
    GeneratedValue
    注释
综上所述,我认为(同样地,取决于您的格式),如果引用完整性完好无损,那么id是什么并不重要