Встраиваемая сущность с атрибутом @OneToMany - PullRequest
14 голосов
/ 26 марта 2012

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

@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 s id в C ( например, без дополнительной таблицы ).

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

1 Ответ

9 голосов
/ 26 марта 2012

В общем, это возможно с аннотацией @ 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...