如何使用hibernate保存类似的邮政地址和地址?

时间:2013-06-27 01:03:00

标签: hibernate java-ee

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

用户类

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

代码

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

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

1 个答案:

答案 0 :(得分:2)

您不必关心这些地址是否相同。使用session.save()保存实体后,该实体即被管理。因此,如果实体已被保存,则第二个save()将不会执行任何操作。

修改

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

我为addresspostalAddress设置了相同的地址。如果你这样做:

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

执行此操作(在关联上定义cascade="persist"后):

session.save(user);

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