отношения один ко множеству - PullRequest
3 голосов
/ 13 мая 2011

Рассмотрим две таблицы, как указано ниже -
Таблица1 (id_col, name_col)
Таблица2 (uid_col, code_col_1, code_col_2)

где
id_col является первичным ключом для Table1
uid_col является первичным ключом для Table2
и id_col имеет отношение один ко многим как code_col_1 , так и code_col_2

Записи могут выглядеть так: -
Table1
1, ххх
2, ггг

Table2
11, 1, 2
12, 2, 1
12, 2, 2

Как будет выглядеть JPA в следующих классах?

@Entity
@Table(name = "Table1")
public class T1 {
    @OneToMany(targetEntity=T2.class, mappedBy="??????", cascade=CascadeType.ALL)
    private List<T2> t2; //???not sure about this
}

@Entity
@Table(name = "Table2")
public class T2 {
    @ManyToOne
    @JoinColumn(name="code_col_1")
    private T1 t1;  //???not sure what goes here
}

1 Ответ

1 голос
/ 13 мая 2011

Это не связь один-ко-многим;скорее это две отдельные многозначные ассоциации от T2 до T1.Вы должны отобразить обе стороны на T2:

@Entity
@Table(name = "Table2")
public class T2 {
  @Id // map whatever generator you'd like
  private long id;

  @ManyToOne
  @JoinColumn(name="code_col_1")
  private T1 t1_code1;

  @ManyToOne
  @JoinColumn(name="code_col_2")
  private T1 t1_code2;
}

Отображение обратных связей один-ко-многим из T1 в T2 не очень хорошая идея, потому что вы рискуете иметь (некоторые из)одни и те же элементы в обеих коллекциях, что приведет к возникновению всевозможных проблем во время вставки / удаления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...