存在于多个目录中的实体的Hibernate注释

时间:2010-03-04 16:08:57

标签: java hibernate orm hibernate-annotations

我有一个由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 {
}

3 个答案:

答案 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  {
...
}

不确定它是否可行,你的问题让我对最好的方法感到好奇:)。我会在下班后今晚测试它,看看它是否有用。

相关问题