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 中的一个表?
为啥 MyEclipse 的 Hibernate 逆向工程在映射某些表时会创建多个类?