У меня есть три стола, Member
, Address
и Mem_Addr
. Member
и Address
объекты сопоставлены/связаны Mem_Addr
стол. Многим многим.Hibernate Mapping - соединительный стол без @Id
У меня есть следующие объекты для Member
и Address
:
@Entity
@Table (name="Member")
public class Member{
@Id //....
private Integer mem_id;
@OneToOne
@JoinTable (name = "Mem_Addr",
joinColumns = @JoinColumn(name = "addr_id"),
inverseJoinColumns = @JoinColumn(name = "mem_id"))
Set<Address> addresses = new HashSet<Address>;
...
}
Mem_Addr
стол (Это не связано сущностей).
addr_id // (PK) Sequence
mem_id // (FK to mem_id in Member table)
....
....
Address
субъект.
@Entity
@Table(name="Address")
public class Address {
private String addr_id; // Foreign Key to addr_id in Mem_addr table
private String address1;
...
}
У меня нет ID в Address
таблицы/сущности. (Пожалуйста, не спрашивайте меня о дизайне. Его нельзя изменить сейчас.)
Поэтому, когда я загружаю участников, я хочу загрузить все адреса для этого члена.
Какое решение?
Edit: Подробнее ...
В принципе некоторые Member
s будет иметь новую запись в таблице Mem_Addr
. Для каждой записи в таблице Mem_addr
будет запись в таблице Address
.
Чтобы получить адрес члена, мне нужно обратиться к Mem_Addr. Mem_Addr имеет addr_id
в качестве первичного и Адрес имеет addr_id
как внешний ключ.
Есть ли addr_id в объекте Address, потому что я вижу в сущности Mem, которую вы вызываете? – Rika
@ Рика, ты прав. Я ошибся. Исправленный. –
Я думаю, что вы, вероятно, можете подключиться без идентификаторов, но у него должна быть встроенная аннотация, см. Здесь http://stackoverflow.com/questions/767277/hibernate-and-no-pk – Rika