나는 분명히 이것을 첫 번째 시도로 설명 할 수 있기를 바랍니다. 그래서 나는 두 개체 : 사람과 주소가 있습니다. 한 사람은 많은 주소를 가질 수 있으므로 내 Person 엔티티는 주소 목록으로 구성됩니다. 주소는 여러 사람이 공유 할 수 있지만 주소 엔티티에는 Person 엔티티에 대한 참조가 필요하지 않습니다. 또한 각 주소 엔터티는 순위 특성을 갖습니다. 다음과 같이JPA - JoinTable이있는 @OneToMany
내 테이블 구조는 다음과 같습니다
PERSON (
person_id,
etc,
primary key (person_id)
)
ADDRESS (
address_id,
etc,
primary key (address_id)
)
PERSON_ADDRESS_MAP (
person_id,
address_id,
rank,
foreign key (person_id) references person (person_id),
foreign key (address_id) references address (address_id),
primary key (person_id, address_id, rank)
)
위를 감안할 때, 내 사람의 주소 목록 또는 주소의 순위 속성을 주석하는 방법을 모르겠어요. 나는 다음과 같이 사람의 모양을 의심 :
@Entity
public class Person {
@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER)
@JoinTable(name="person_address_map", [email protected](name="person_id"), [email protected](name="address_id"))
private List<Address> addresses;
...
}
내가 주소 엔티티에 순위을 주석하는 방법에 대한 단서입니다. 사전에 모든
텍스트는 순위가 Address에 있지만 테이블 설명에 PERSON_ADDRESS_MAP에 있다고 표시합니다. 어느 것이 사실입니까? –
모두 사실입니다. 순위는 주소 엔티티의 속성이지만 한 사람의 한 주소가 다른 사람의 주소와 다른 순위 일 수 있기 때문에 조인 테이블에 저장됩니다. 예를 들어, Bob은 첫 번째 주소로 'A'를 순위 지정하지만 Mary (동일한 주소에 사는 사람)는 두 번째 주소로 'A'를 순위 지정합니다. – user1491636