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 使用C#,asp.net读取Excel文件并保存到Oracle数据库
    • ¥15 C# datagridview 单元格显示进度及值
    • ¥15 thinkphp6配合social login单点登录问题
    • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
    • ¥15 如何在scanpy上做差异基因和通路富集?
    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配