2016-10-14 2 views
0

아파트 관리 소프트웨어를 사용하고 있는데 문제가 있습니다.jpa 최대 절전 모드 일대일 업데이트

@Entity 
public class Tenant extends AbstractEntity { //AbstractEntity contains the id 
    @Column(nullable = false) 
    private int number; 
    @OneToOne 
    private Apartment apartment; 
} 

@Entity 
public class Apartment extends AbstractEntity { //AbstractEntity contains the id 
    @Column(nullable = false) 
    private int number; 
    @OneToOne 
    private Tenant tenant; 
} 

을하지만

EntityManager em = emProvider.get(); 
em.getTransaction().begin(); 

em.merge(apartment); 
em.flush(); 

em.getTransaction().commit(); 

을 수행 할 때 그것은 단지 아파트에 입주를 저장하지만, 내가 좋아하는 것 :

내가 가지고있는 두 기관이 아파트를 임차인으로 갱신하십시오.

정말 임차인에게 아파트 필드를 설정해야합니까, 아니면 간단하게 해결할 수있는 방법이 있습니까? 감사

진심으로, Baskwo

+0

https://en.wikibooks.org/wiki/Java_Persistence/Relationships#Cascading –

답변

0

당신은 당신의 아파트 엔티티에 CascadeType.ALL를 선언해야합니다. 샘플보기

@OneToOne(cascade = CascadeType.ALL) 
private Tenant tenant; 

CascadeType.ALL은 모든 CRUD 작업에 사용됩니다. CascadeType 조정은 응용 프로그램 요구 사항에 따라 다릅니다.

+0

정말 고마워요! – baskwo

+0

마지막 질문이 하나 있습니다. 앱을 다시 시작해야하므로 아파트를 업데이트 할 때 즉시 적용되지 않습니다. – baskwo

+0

응용 프로그램 디자인에 따라 다릅니다. UI에서 최신 업데이트 된 레코드를 보려면 SELECT 메서드를 다시 호출하고 em.refresh (yourobject) 메서드를 호출하면됩니다. –