7

我有一个由 Hibernate 映射到数据库目录“活动”中的数据库表的 Person 实体。一段时间后,“活动”目录中此数据库表中的记录被存档/移动到数据库目录“历史”中表的精确副本。我需要从活动目录和历史目录中检索。有没有更好的方法来使用 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 {
}
4

3 回答 3

1

据我所知,这将是使用注释的正确方法(你有点有两个表,所以你需要两个实体)。然后对Person实体运行多态查询。顺便说一句,我觉得这很干净。

PS:您能否添加有关如何使用映射文件执行此操作的指针,我真的很好奇。

于 2010-03-04T18:03:06.207 回答
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  {
...
}

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

于 2011-05-10T12:05:36.923 回答
0

我认为有一个名为 shards 的休眠子项目。它旨在与多个关系数据库一起使用。如果您想使用它,您可能需要对代码进行大的更改。

于 2011-05-10T11:46:52.380 回答