stophin 2019-04-10 15:46 采纳率: 42.9%
浏览 303

请问hibernate mysql如何将一个数据库提取出来的Entity作为源保存到另外一个数据库

使用mysql-connector 5和hibernate,两个数据库都配置好了,
已经验证可以做基础的select操作。
现在想在一个数据库中使用Dao获取Entity然后不用new另外的Entity,
直接使用这个Entity保存到另外数据库(因为需要的表太多,不可能给
每一个Entity都写一个拷贝方法,而且Entity其实就是JPA,
两个数据库的Entity应该是相差无几的)。也就是数据移行,有一些id
关联也需要改掉。
现在假设数据库只有一个key即id且AUTO INCREMENT,JPA注解如下
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
protected Long id;
如果要实现上面的功能,我想使用saveOrUpdate,所以直接设置
entity.setId(null),然后希望数据库能够自动为id赋值。
然后循环所有表,把所有数据都通过这种方法“拷贝”过去。
测试时几条数据还可以,但是当正式拿到数据库中跑时,出现下面错误
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
定位在某一些id替换的Dao.saveOrUpdate中。我是先将所有数据原样“拷贝”,并记录id映射,然后重新来循环替换id,在替换时就出现了这样的错误。

我不知道是哪里有错误,是entity.setId(null)的问题吗?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
    • ¥15 关于arduino编程toCharArray()函数的使用
    • ¥100 vc++混合CEF采用CLR方式编译报错
    • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
    • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
    • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
    • ¥50 如何openEuler 22.03上安装配置drbd
    • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
    • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
    • ¥15 Windows11, backspace, enter, space键失灵