2016-10-14 7 views
0

私はアパート管理ソフトウェアを開発中で、問題があります。jpa hibernate one-to-one update

@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(); 

を行うときにのみアパートにテナントを保存するが、私はそれをしたいと思います:

私が持っている2つのエンティティがありますまた、アパートをテナントに更新します。

本当にアパート畑をテナントに設定する必要がありますか、それとも簡単に解決する方法がありますか? おかげ

真心を込め、あなたのアパートのエンティティでCascadeType.ALLを宣言する必要が Baskwo

+0

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

答えて

0

。サンプルを参照してください。

CascadeType.ALLはすべてCRUD操作用です。 Adjust CascadeTypeはアプリケーションのニーズに依存します。

+0

ありがとうございました! – baskwo

+0

私は最後の質問が1つあります。アパートを更新すると即座に反映されないので、アプリを再起動する必要があります。 – baskwo

+0

それはあなたのアプリケーション設計に依存します。あなたのUIで最新の更新されたレコードを見たい場合は、再度SELECTメソッドを呼び出してem.refresh(yourobject)を呼び出すことができます。 –

関連する問題