0

我有两个不同的数据库 D1、D2 和同一个表 T。

T 有一个主键列 id,它在 D1 中自动生成,在 D2 中是一个简单的整数。我必须将记录从 D1 中的 T 转移到 D2 中的 T,因此我将 T 映射为带有 JPA 的 @Entity。问题是 @ID 是 @GeneratedValue(strategy = GenerationType.IDENTITY) 对于 D1 但不是 D2。

有没有不复制实体的解决方案?我注意到使用@MappedSuperclass 我需要一个@Id 列,但就我而言,这是我想要专攻的。我找到的唯一解决方案是生成两个不同的类,它们引用同一个表,除了@id 之外是相同的......还有什么更好的吗?

(如果我使用常见的抽象类,我在定义@NamedQueries 时会遇到问题,因为似乎无法引用继承的字段(SELECT m FROM Specialized m WHERE m.aBaseField= :aBaseField)返回异常:“状态字段路径” m.aBaseField' 无法解析为有效类型。”

4

2 回答 2

1

我将定义两个不同的持久性单元,每个数据库一个。然后,您可以使用 orm.xml 文件自定义一个。

于 2013-08-07T13:35:56.983 回答
0

我没有找到真正的解决方案。我最终做的是复制提供不同 @Entity(name="name1") 的类,并为其中一个删除 @GenerationType 注释。在持久性单元中,我根据我将要做的事情使用其中一个或另一个。

于 2013-08-08T19:33:46.677 回答