Подтвердить что ты не робот

Встраиваемый объект с атрибутом @OneToMany

Скажем, у меня есть следующие сущности:

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

  @Embedded
  private B b;

  //getters and setters
}

@Embeddable
public class B {
  @OneToMany
  private List<C> cList;
  //getters and setters
}

@Entity
public class C {
  @Id
  @GeneratedValue
  private Long id;
  //other fields, getters and setters
}

Используя функцию автоматической генерации с помощью Hibernate, я получаю дополнительную таблицу, которая содержит сопоставления между A и C. Но я хотел бы реализовать отношение "один ко многим", добавив A id в C (например, без дополнительной таблицы).

Возможно ли это? Если да, какие аннотации следует использовать для создания такого сопоставления?

4b9b3361

Ответ 1

В общем, это возможно с аннотацией @JoinColumn. Он также работает с вложениями.

@OneToMany
@JoinColumn(name="A_ID")
private List<C> cList;

Если вас не устраивает имя A_ID для столбца, указанного в embeddable, вы можете переопределить имя столбца в сущности A:

@AssociationOverride(name= "cList",
        joinColumns = @JoinColumn(name="SOME_NAME_FOR_JOIN_COLUMN_IN_TABLE_C"))
@Embedded
private B b;