2012-02-24 34 views
1

我有下面的單向多對一映射使用合併刪除許多在JPA一個關係()

@Entity 
public class Item implements Serializable { 
    private Integer id; 
    private Double amount; 
     private Country origin; 

    @ManyToOne(optional=true) 
    @JoinColumn 
    public Country getOrigin() { 
     return this.origin; 
    } 
} 

@Entity 
public class Country implements Serializable{ 

    private String code; 
    private String desc; 
} 

咱們說的關係是可選的,所以我想通過更新其去除的關係用爲null代碼如下

Country country = null; 
//item is detached 
item.setOrigin(country); 
em.merge(item); 

但結果證明是關係不被刪除。 但是,如果country不爲空並且系統可以更新數據庫中的關係,則此代碼正常工作。 它只是簡單地忽略該字段,如果它爲空。 有人可以指出什麼設置可以改變,以實現我想要的結果?

P.S.請注意,我不想刪除實體Country,但只是刪除它們之間的關係。

+1

假設你實際上有'setOrigin',這應該工作。也許你應該試試'em.flush()'看看你是否能得到你所期望的? – beerbajay 2012-02-24 08:30:00

+1

也許是一個愚蠢的問題,但二傳手是怎樣的? – Firo 2012-02-24 08:32:30

+1

我認爲級聯= Cascade.MERGE將有助於這種情況。 @ManyToOne(可選= true,cascade = Cascade.MERGE) – 2012-02-24 16:08:13

回答

0

感謝所有這是一個錯誤的問題。它實際上工作。

只有一些客戶端問題向其提交錯誤數據。

相關問題