繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM