2013-08-28 56 views
0

這是我的EclipseLink JPA實體的一部分:如何將更改保存到@OneToOne關係

public class Task implements Serializable { 
@JoinColumn(name = "IdTransaction", referencedColumnName = "serial_no") 
@OneToOne(cascade = CascadeType.ALL) 
private Transaction idTransaction; 

} 

當我堅持或合併的任務實體,交易實體不會更新更改。

有人告訴我使用這個:(cascade = CascadeType.ALL)但它沒有奏效。

那麼,我怎樣才能保存更改兩個entites與一個持續/合併調用?

我更新數據庫是這樣的:

if (getEntityManager().isOpen()) { 
      getTransaction().begin(); 
      entity = em.merge(entity); 
      getTransaction().commit(); 
     } 

「實體」是任務實體我說的是,它更新正常,但沒有關係。

+0

你可以顯示修改Task和Transaction的實例嗎? –

+0

是的,我現在編輯了這個問題。 – GabrielBB

+0

您可以在創建對象的位置顯示任務類和您的服務嗎? – paulek

回答

0

我找到了解決辦法,這些都是可用的瀑布:

CascadeType.MERGE 
CascadeType.PERSIST 
CascadeType.DETACH 
CascadeType.REMOVE 
CascadeType.REFRESH 
CascadeType.ALL 

如果你有一個實體「美國」與「國」的entites列表,並進行更改的一些國家,你只需要添加:

@OneToMany(cascade = CascadeType.MERGE) 
private State stateID; 

然後只是合併美國實體,而不是每一個改變的狀態。使用CascadeType.MERGE時,它應該自動更新所有內容。