1

我有 2 个具有相同架构的数据库:本地数据库 A 和中央数据库 B。我想:

  1. 从 db A 查询会话(使用某些条件)
  2. 将选择数据作为具有新生成的 id 的新条目插入到 db B。

例如:会话实体生成了 id 和 ManyToOne 关系到 testingData 也生成了 id。

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

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

提前致谢...

4

1 回答 1

0

您需要实例化一个新对象(可能使用复制构造函数方法)。问题是您从 Hibernate 返回的对象是代理的,因此与会话相关联(您是否曾经在某个时候遇到过 LazyInitializationException?)

因此,您需要将属性从绑定到DB A的休眠增强对象复制到原始对象,该对象未链接到任何 DB 并且可以插入DB B中。


更新

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

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

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

于 2012-05-17T12:52:49.880 回答