Hibernate在2个数据库之间传输数据

时间:2012-05-17 12:38:11

标签: database hibernate

我有2个具有相同模式的数据库:本地数据库A和中央数据库B. 我想:

  1. 从db A
  2. 查询会话(带有一些条件)
  3. 将选择数据作为具有新生成的ID的新条目插入db B。
  4. 例如: 会话实体已生成id和ManyToOne关系到testingData,它也生成了id。

    @Id
    @Column(name = "ID", nullable=false)
    @GeneratedValue(strategy = GenerationType.TABLE)
    public long getDatabaseIdentifier()
    {
        return databaseIdentifier;
    }
    

    最有效的方法是什么?我不想创建新实体并使用复制构造函数。 我试图使用Example.create(session).excludeProperty("databaseIdentifier"),但没有运气。

    提前致谢...

1 个答案:

答案 0 :(得分:0)

您需要实例化一个新对象(可能使用复制构造方法)。问题是你从Hibernate返回的对象是代理的,因此,与会话绑定(你有没有在某个时候得到LazyInitializationException?)

因此,您需要将属性从绑定到 DB A 的hibernate增强对象复制到一个未链接到任何数据库的vanilla对象,并且可以插入 DB B


更新

您可以尝试以下操作,但我不确定它是否可行

  • 通过调用EntityManager.detach(obj)
  • 分离对象
  • 从对象中删除ID
  • 使用其他实体管理器保存对象

同样,我不确定这是否会起作用,因为detach()会从持久化上下文中删除对象,但它仍然是一个增强的对象。