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条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 sub地址DHCP问题
    • ¥15 delta降尺度计算的一些细节,有偿
    • ¥15 Arduino红外遥控代码有问题
    • ¥15 数值计算离散正交多项式
    • ¥30 数值计算均差系数编程
    • ¥15 redis-full-check比较 两个集群的数据出错
    • ¥15 Matlab编程问题
    • ¥15 训练的多模态特征融合模型准确度很低怎么办
    • ¥15 kylin启动报错log4j类冲突
    • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大