Inheritance JPA使用继承区分id GenerationType

Inheritance JPA使用继承区分id GenerationType,inheritance,jpa,mappedsuperclass,Inheritance,Jpa,Mappedsuperclass,我有两个不同的数据库D1,D2和同一个表T T有一个主键列id,在D1中自动生成,在D2中是一个简单的整数。 我必须将记录从D1中的T转移到D2中的T,所以我将T映射为带有JPA的@实体。 问题是对于D1,@ID是@GeneratedValuestrategy=GenerationType.IDENTITY,而对于D2则不是 是否有不复制实体的解决方案?我注意到使用@MappedSuperclass我需要一个@Id列,但在我的例子中,这正是我想要专门化的。 我发现的唯一解决方案是生成两个不同的类

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

T有一个主键列id,在D1中自动生成,在D2中是一个简单的整数。 我必须将记录从D1中的T转移到D2中的T,所以我将T映射为带有JPA的@实体。 问题是对于D1,@ID是@GeneratedValuestrategy=GenerationType.IDENTITY,而对于D2则不是

是否有不复制实体的解决方案?我注意到使用@MappedSuperclass我需要一个@Id列,但在我的例子中,这正是我想要专门化的。 我发现的唯一解决方案是生成两个不同的类,它们引用同一个表,除了@id之外,它们是相同的。。。还有更好的吗


如果我使用公共抽象类,我在定义@NamedQueries时会遇到问题,因为似乎无法引用继承的字段,请从专用的m中选择m,其中m.aBaseField=:aBaseField返回异常:无法将状态字段路径“m.aBaseField”解析为有效类型。

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

我没有找到真正的解决方案。
我最后做的是复制提供不同@Entityname=name1的类,并删除其中一个@GenerationType注释。在持久性单元中,我会根据我要做的事情使用其中一个。

谢谢James,我使用了注释,但我认为它是一样的。我只有两个持久性单元,所以复制实体类或orm.xml是一个解决方案,但这是一个肮脏的解决方案:。