我有一个由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 {
}
答案 0 :(得分:1)
据我所知,这是用注释做的正确方法(你有两个表,所以你需要两个实体)。然后在Person
实体上运行多态查询。顺便说一句,我发现这很干净。
PS:你能不能用映射文件添加指针,我真的好奇。
答案 1 :(得分:0)
我认为有一个名为shards的hibernate子项目。它旨在与多个关系数据库一起使用。如果您想使用它,您的代码可能需要进行大的更改。
答案 2 :(得分:0)
我的想法是编写一个查询来从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 {
...
}
不确定它是否可行,你的问题让我对最好的方法感到好奇:)。我会在下班后今晚测试它,看看它是否有用。