我正在创建 RESTful Web 服务。允许客户注册Company
,然后在需要时进行更新。Company
有Address
关联。当用户请求Company
更新时,它会发送Company
对象 id 并Company
涉及Address
没有Address
es id 的对象。要更新Company
对象,我使用休眠merge
方法。它正确设置了新Company
数据,但它创建了新Address
行而不是更新它。
我怎么解决这个问题?
我可以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 address SET city='NEW YORK' FROM companies WHERE address.id = companies.address_id
但我希望它成为默认操作。如果您看到任何没有 id 的关联,请使用上述查询。