[英]Hibernate Annotation for Entity existing in more than 1 catalog
我有一个由Hibernate映射到数据库目录“Active”中的数据库表的Person实体。 经过一段时间后,“Active”目录中此数据库表中的记录将归档/移动到数据库目录“历史记录”中表的精确副本。 我需要从活动目录和历史目录中检索。 有没有更好的方法来使用Hibernate注释对此进行建模,而不是创建一个2类扩展的抽象类。
这就是我现在拥有的。
@MappedSuperclass
public abstract class Person {
@Id
private Integer id;
private String name;
}
@Entity
@Table(name="Person", catalog="Active")
public class PersonActive extends Person {
}
@Entity
@Table(name="Person", catalog="History")
public class PersonHistory extends Person {
}
据我所知,这是用注释做到这一点的正确方法(你有两个表,所以你需要两个实体)。 然后在Person
实体上运行多态查询。 顺便说一句,我发现这很干净。
PS:你可以添加一个关于如何使用映射文件执行此操作的指针,我真的很好奇。
我认为有一个名为shards的hibernate子项目。 它旨在与多个关系数据库一起使用。 如果您想使用它,您可能需要对代码进行重大更改。
我的想法是编写一个查询来从db A和B中选择两个表,然后使用hibernate创建一个查询并将其映射到您的类。
例:
@Entity
@NamedNativeQuery(
name="GetAllPerson",
query="select * from A.Person inner join B.Person on A.Person.Id = B.Person.Id"
)
public class Person {
...
}
不确定它是否可行,你的问题让我也对最好的方法感到好奇:)。 我会在下班后今晚测试它,看看它是否有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.