2017-10-03 2 views
0

질문을하는 것보다 설명하는 것이 더 쉽다고 생각합니다. 다음을 수행하는 수식을 찾을 수 없습니다.집합과 스프링 객체를 동시에 속성으로 사용할 수 있습니까?

PHOTO 개체가 있다고 상상해보십시오. 한편으로는 @OneToOne 관계를 갖는 PHOTO Object를 가진 NEWS Object를 가지고 있습니다. 반면에 PHOTO 객체 인 avatar 속성을 가진 PROFILE 객체와 @OneToOne 관계가 있습니다. 동시에 프로필에 @OneToMany 관계가있는 PHOTO 개체 집합 인 ALBUM 개체가 있어야합니다.

하이버 네이트는 같은 PHOTO 객체에서 @OneToOne과 @OneToMany 관계를 공유하지 못하게한다. 나는 같은 테이블을 사용하여 @OneToOne과 @OneToMany 관계의 PHOTO Object를 동시에 저장할 수 없다고 생각합니다.

누군가가 나 이유 또는 문제를 해결하는 다른 방법으로 설명 할 수 .... 그런 다음 Photo 엔티티 독립적 인 저장을 유지 다른 기관에서 Photo 엔티티를 사용하려면

당신

+0

답이 맞는지는 확실치 않지만, updatable = false이고 insertable = false 인 경우 Hibernate는 용서할 수 있습니다. 그렇게하면 기본 관계를 가질 수 있지만 같은 대상을 얻는 다른 방법이 있습니다. – JustinKSU

+0

'@ OneToOne'의 유효성에 대해 질문 할 것입니다. 실제 시나리오에서 일대일 관계는 특히 사진, 프로필 및 뉴스 기사와는 전혀 관련이없는 개체 사이에서 매우 드뭅니다. 귀하의 경우, 동일한 사진을 뉴스 기사와 프로필에 할당 할 수 있으므로 어느 것과도 일대일 관계를 가질 수 없습니다. 일대일 관계에 대한 리트머스 테스트는 두 객체가 항상 다른 것과 공유되지 않는 동일한 기본 키를 공유해야하는지 여부입니다. 그리고 나서 그들은 단지 일대일입니다. 대부분의 경우 정확한 관계는 실제로'@ ManyToOne'입니다. – manish

+0

"스프링 개체"란 무엇입니까? – DN1

답변

0

감사 Photo 엔티티 또는 매핑 테이블을 사용하는 엔티티의 모든 관계. 귀하의 경우 다음과 같은 구조를 사용할 수 있습니다.

class Profile { 

    @oneToOne 
    @JoinColumn(name="avatar") 
    Photo avatar; 

    @OneToMany 
    @JoinTable(name="profile_album",[email protected](name="profile_id"),[email protected](name="photo_id")) 
    Set<Photo> album; 
} 

테이블 구조는 다음과 같습니다.

photo - id, ... 
profile - id, avatar (references photo id), ... 
profile_album - profile_id, photo_id // mapping table 
+0

감사합니다. 그것이 올바른 주석입니다. 이러한 유형의 주석 (inverseJoinColumns)에 대한 자세한 내용은 어디에서 알 수 있습니까? –

+0

@ JorgeM.Nures [사용자 가이드] (http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html) 읽기 – wolverine

관련 문제