3
我正在創建RESTful Web服務。客戶端可以註冊Company
,然後根據需要進行更新。 Company
有Address
協會。當用戶請求Company
更新它發送Company
對象ID和Company
涉及Address
對象沒有Address
es id。要更新Company
對象,我使用hibernate merge
方法。它會正確設置新的Company
數據,但會創建新的行而不是更新它。更新休眠關聯
我該如何解決這個問題?
我可售Address
通過company.getAddress()
得到它的ID和合並新Address
但是當我這樣做,所有Company
數據正在牽強,我認爲這是不好的。
public class Company implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "address_id")
private Address address;
}
UPDATE
我也可以寫一個自定義查詢
UPDATE address SET city='NEW YORK' FROM companies WHERE address.id = companies.address_id
,但我想這是一個默認的動作。如果您看到沒有ID的任何關聯,請使用上述查詢。
當你合併一家公司時,所有的公司數據也被提取。不要預先優化。讓它工作,如果你有一個性能問題,看看它來自哪裏,並優化這部分。通過ID獲取公司及其地址非常快。 –