Hibernate - Таблица для конкретной стратегии класса - отдельные идентификаторы для каждой таблицы

В моем приложении есть объект собрания, свойства которого хранятся в таблице собраний. Я должен создать новый объект, скажем, "meetingNEW", имеющий несколько разных свойств, но большинство из них общие.

Я думаю использовать таблицу для конкретной стратегии класса, но я хотел бы иметь отдельные идентификаторы для двух таблиц, а не наследовать ее от суперкласса. Является ли это возможным? Я нахожу только примеры с общим идентификатором.

Моя идея: MeetingType -> абстрактный суперкласс

Meeting расширяет MeetingType с Meeting_id в качестве PK (таблица)

MeetingNEW расширяет тип собрания с MeetingNEW_id в качестве PK (таблица)

Спасибо

1 ответ

Решение

Почему вы используете таблицу для конкретной стратегии класса? Для меня это выглядит как стратегия "таблица на подкласс", как показано ниже, с таблицей meeting_type с общими свойствами и другими таблицами с конкретными свойствами с собственным идентификатором PK.

 @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();
}
Другие вопросы по тегам