我有2个具有相同模式的数据库:本地数据库A和中央数据库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")
,但没有运气。
提前致谢...
答案 0 :(得分:0)
您需要实例化一个新对象(可能使用复制构造方法)。问题是你从Hibernate返回的对象是代理的,因此,与会话绑定(你有没有在某个时候得到LazyInitializationException?)
因此,您需要将属性从绑定到 DB A 的hibernate增强对象复制到一个未链接到任何数据库的vanilla对象,并且可以插入 DB B 。
您可以尝试以下操作,但我不确定它是否可行
同样,我不确定这是否会起作用,因为detach()会从持久化上下文中删除对象,但它仍然是一个增强的对象。