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获取公司及其地址非常快。 –