0
這裏的情況是: 我有2個實體交易和客戶: - 一個客戶端關聯到一個商人 - 一個商人可以在刪除使用EntityManager的交易者可以關聯到一個或多個客戶端 。刪除(t)然後提交,所有與該交易者相關的客戶端都會自動刪除。這很好,因爲它是級聯刪除。 問題:刪除對級聯的EntityManager
1 - 如何刪除我的交易者並重新將其客戶端重新設置爲另一個客戶端?
2 - 解決方案駐留在mySQL中的級聯效應是否失效,或駐留在entityManager和MySQL中? 非常感謝您的幫助。
客戶實體
public class Client implements Serializable {
@Transient
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id_client")
private Integer idClient;
@Column(name = "id_portefeuille")
private Integer idPortefeuille;
@Column(name = "id_entreprise")
private Integer idEntreprise;
@Column(name = "id_trader")
private Integer idTrader;
//other attributes
@JoinColumn(name = "id_trader", referencedColumnName = "id_trader", updatable = false, insertable = false)
@ManyToOne
private Trader idTrader2;
//getters and setters
交易實體
public class Trader implements Serializable {
@Transient
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id_trader")
private Integer idTrader;
@Column(name = "nom")
//other attributes
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idTrader2")
private Collection<Client> clientCollection;
//getters and setters
主代碼
//Getting The trader selected in a JTable
Trader t = traderList.get(tableTrader.getSelectedRow());
for (Iterator<Client> it = t.getClientCollection().iterator(); it.hasNext();) {
//Getting the Clients releated to this trader
Client c = it.next();
//Affecting the client to an other trader
// i chose an existing one randomly
c.setIdTrader2(traderList.get(2));
traderList.get(2).getClientCollection().add(c);
it.remove();
}
entityManager.flush();
entityManager.remove(t);
}
1 THX烏拉圭回合的答覆。 – WOlF
1st thx for ur reply 我試圖管理實體引用,因爲你顯示它,我得到這個異常com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:無法刪除或更新父行:外鍵約束失敗 做你認爲我應該在刪除交易者之前合併新客戶端的法定條款嗎? – WOlF
只需在調用em.remove(toDelete)前添加'em.flush();'。 –