Ложная СОЕДИНЕННАЯ стратегия наследования без фактического наследования - PullRequest
0 голосов
/ 07 октября 2011

Я хочу использовать смешанную стратегию @Inheritance, но Hibernate не поддерживает ее.
Есть ли способ реализовать JOINED наследование без фактического наследования классов. Например:

@Entity
@Table(name="A")
@Inheritance(strategy=InheritanceType.JOINED)
public class A { 
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ID_SEQ")
  private Long id;

  //getters
  //setters
}

@Entity
@Table(name="B")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class B {
  @Id
  private Long id;

  //getters
  //setters
}

Итак, в основном в B Я просто хочу сослаться на @Id, сгенерированный в A без расширения от A.

Ответы [ 2 ]

1 голос
/ 10 октября 2011

Я нашел решение.JPA не позволяет объединять @Id и @OneToOne.Тем не менее, аннотация @MapsId помогает:

@Entity
public class A { 
  @Id
  private Long id;

  //getters
  //setters
}

@Entity
public class B {
  @Id
  private Long id;

  @MapsId
  @OneToOne(optional=false, fetch=FetchType.EAGER)
  @JoinColumn(nullable=false, name="id")
  private A a;

  //getters
  //setters
}
0 голосов
/ 07 октября 2011

Я думаю, что вы можете сделать это, создав отношение @OneToOne или @OneToMany и указав имя таблицы следующим образом:

  @Id @OneToOne
  @JoinColumn(name = "id")
  private A a;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...