Hibernate 一个类映射到多个表

Posted

技术标签:

【中文标题】Hibernate 一个类映射到多个表【英文标题】:Hibernate One Class map to Multiple tables 【发布时间】:2015-12-08 11:55:22 【问题描述】:

mysql 中使用 Hibernate,我喜欢使用同一个类并存储在两个不同的表中。如何将一个类映射到多个表?

我遇到了这个帖子, hibernate two tables per one entity

建议通过 XML 配置为同一类使用两个不同的身份名称。有人能给我指点我应该如何在 Java 配置中进行这种映射吗?还是可以使用注解来完成?

例子,

有学生班

@Entity
@Table(name="Student_1")
public class Student

    @Id
    private int StudentId;
    private int StudentName;
    private int studentMailId;


我喜欢具有相同字段且表名为 Student_2 的类似表。我应该如何注释并使用它来保存在不同的表中?

【问题讨论】:

也许这不是一个选项,但你不能在数据库中为此创建一个视图吗?这样你就可以在不滥用 JPA 的情况下相处。 我可能会得到其他类似表的不同数据,它不习惯只是拥有该表的副本。 好吧,如果它们不同的,那你为什么要把它映射到同一个实体呢?只需创建两个子类,并用@MappedSuperclass 注释Student˛class,用@Entity@Table 注释新类。 字段相同,字段数据不同。让我检查一下@MappedSuperClass 是否可行 在@MappedSuperClass 中我必须继承并拥有主记录,我有 15 个以上的表,我想为同一程序的不同数据集创建不同的表名 【参考方案1】:

我知道这个问题是很久以前提出的,并且已经发布了回复 here 。 我想建议一种替代方式,不使用任何休眠的东西。

用公共列的getter和setter方法声明一个接口,然后让你的Student_1类和Student_2类实现这个接口。 像往常一样将你的 JPA 映射保留在这两个类中,然后在你的代码中,你可以调用这个接口的方法。

【讨论】:

以上是关于Hibernate 一个类映射到多个表的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate使用hbm.xml将多个类映射到一个表

如何将多个值类型集合映射到 Hibernate 中的一个表?

为啥 MyEclipse 的 Hibernate 逆向工程在映射某些表时会创建多个类?

Hibernate ORM框架——续第二章:Hibernate映射关系:单向关联

Hibernate组件映射

Hibernate多表关系配置——多对多对关系映射