如何使用hibernate / jpa注释将一个类映射到不同的表

我目前陷入了一个似乎非常简单的问题,但我似乎无法找到解决办法:

我有2个相同的表:

  1. tbl_creditcard_approved_txns
  2. tbl_creditcard_declined_txns

两者中的字段是相同的,我有一个类 – 用于表示表中所有适当字段的Transaction

我正在尝试将两个不同的实体(每个表一个)映射到上面的类。 在旧世界中,我已经创建了两个hbm.xml文件,每个表对应一个表并将它们映射到Transaction 。 然后,我将在持久性期间使用实体名称,以确保对象在正确的表中持久化,具体取决于具体情况。

我正在尝试使用当前的注释来实现相同的目标但到目前为止在将2个实体映射到单个类时没有运气。 这有可能吗?

我目前正在使用不同的方法,因为我已经将所有公共字段(相同的列名称)提取到@MappedSuperClass并且已经创建了两个单独的类(每个实体一个)从超类扩展(这些类只有具有不同列名的相同字段(如果适用)。

使用@MappedSuperclass,您将按以下步骤操作:

 @MappedSuperclass public class Transaction ... @Entity @Table(name="tbl_creditcard_approved_txns") public class DeclinedTransaction extends Transaction ... @Entity @Table(name="tbl_creditcard_declined_txns") public class ApprovedTransaction extends Transaction ... 

如果需要,使用@AttributeOverride覆盖两种类型的Transaction对象之间的列名。

更新:我看到你想要将一个@Entity映射到同一个EntityManagerFactory中的两个表……我认为你不能这样做。

另一种方法是在数据库层上使用一个分区表,然后在java代码中显示一个单独的表。

这可能是一般规则,你做的智能分区越多,你的查询就越快。

  • Mysql的
  • 神谕

您必须使用两个不同的持久性单元或两个单独的实体。 这已在这里得到解答。