Вопрос

У меня есть 2 таблицы:

A
s_id(key) name cli type

B
sa_id(key) s_id user pwd

Так в Jpa У меня есть:

@Entity
class A...{
   @OneToMany(fetch=FetchType.EAGER)
    @JoinTable( name="A_B", 
    joinColumns={@JoinColumn(name="a_id", table="a",unique=false)}, 
    inverseJoinColumns={@JoinColumn(name="b_id", table="b", unique=true)} )
   Collection<B> getB(){...}
}

класс b - это просто базовый класс сущности без ссылки на A.

Надеюсь, это понятно. Мой вопрос: действительно ли мне нужна таблица соединений для такого простого соединения? Разве это не может быть сделано с помощью простого joincolumn или что-то?

Это было полезно?

Решение

Для этого вам не нужен JoinTable. Если класс B не имеет ссылки на класс A, то будет достаточно следующего

@Entity class A...{ 
@OneToMany(fetch=FetchType.EAGER)     
Collection getB(){...} }

В большинстве случаев вам может потребоваться двунаправленное отношение, в этом случае B имеет ссылку на A. В этом случае вам нужно будет найти аннотацию @mappedBy. упоминается Павлом.

Другие советы

Нет, вам не нужна таблица соединений для OneToMany. Посмотрите на аннотацию @mappedBy

Быстрый ответ: если у вас есть отношение «многие ко многим», вам понадобится еще одна таблица. Если у вас есть отношения «один ко многим» или «многие к одному», вы этого не сделаете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top