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
,但只是刪除它們之間的關係。
假設你實際上有'setOrigin',這應該工作。也許你應該試試'em.flush()'看看你是否能得到你所期望的? – beerbajay 2012-02-24 08:30:00
也許是一個愚蠢的問題,但二傳手是怎樣的? – Firo 2012-02-24 08:32:30
我認爲級聯= Cascade.MERGE將有助於這種情況。 @ManyToOne(可選= true,cascade = Cascade.MERGE) – 2012-02-24 16:08:13