Hibernate - 每个具体类策略的表 - 每个表的单独ID

时间:2015-08-18 07:50:28

标签: hibernate orm concrete-inheritance

在我的应用中,我有一个会议对象,其属性存储在会议桌中。 我必须创建一个新对象,让我们说“meetingNEW”具有一些不同的属性,但大多数都是常见的。

我正在考虑使用每个具体类策略的表,但是我想为这两个表分别使用单独的id,而不是从超类继承它。可能吗?我只是找到一个共同身份的例子。

我的想法是: MeetingType - >抽象超类

会议将MeetingType与Meeting_id扩展为PK(表格)

MeetingNEW将MeetingType与meetingNEW_id扩展为PK(表格)

由于

1 个答案:

答案 0 :(得分:0)

为什么每个具体的课程策略使用Table?对我来说,似乎是每个子类策略的表,如下所示,带有公共属性的meeting_type表和具有自己的PK id的特定属性的其他表。

 @Entity @Inheritance(strategy = InheritanceType.JOINED)
 public class MeetingType {
      @Id
      @Column("meeting_type_id")  
      public long getId();
 }

 @Entity @PrimaryKeyJoinColumns({ @PrimaryKeyJoinColumn(name = "meeting_id", referencedColumnName = "meeting_type_id") })
 public class Meeting extends MeetingType {
   @Column("meeting_id")  
   public long getMeetingId();
 }

 @Entity @PrimaryKeyJoinColumns({ @PrimaryKeyJoinColumn(name = "meeting_new_id", referencedColumnName = "meeting_type_id") })
 public class MeetingNew extends MeetingType {
   @Column("meeting_new_id")  
   public long getMeetingNewId();
}