stophin 2019-04-10 15:46 采纳率: 50%
浏览 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 求解 yolo算法问题
    • ¥15 虚拟机打包apk出现错误
    • ¥30 最小化遗憾贪心算法上界
    • ¥15 用visual studi code完成html页面
    • ¥15 聚类分析或者python进行数据分析
    • ¥15 三菱伺服电机按启动按钮有使能但不动作
    • ¥15 js,页面2返回页面1时定位进入的设备
    • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
    • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
    • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝