0

我需要为用户上传地址。用户有两个地址,地址和邮政地址,如果这些地址彼此不同,我会保存两个地址很容易,但是如果地址相同,如何保持 ID 相同?

用户类

private Address address;
private Address postalAddress;
....

代码

 ....
 session.save(user.getAddress());
 session.save(user.getPostalAddress());
 .....

如果两个地址相同怎么办?

4

1 回答 1

2

您不必关心这些地址是否相同。使用 保存实体后session.save(),该实体将成为托管实体。因此,save()如果实体已被保存,则第二个不会做任何事情。

编辑

Address addr = new Address();
user.setAddress(addr);
user.setPostalAddress(addr);

我为address和设置了相同的地址postalAddress。然后,如果你这样做:

session.save(user.getAddress());
session.save(user.getPostalAddress());

或者这样做(在cascade="persist"关联上定义之后):

session.save(user);

然后 Hibernate 将只插入一行到address表中,并将相同的 id 设置为user.addressuser.postalAddress列。

于 2013-06-27T02:44:39.190 回答