我需要为用户上传地址。用户有两个地址,地址和邮政地址, 如果这些地址彼此不同,我很容易保存两个地址,但如果地址相同,如何保持id不相同?
用户类
private Address address;
private Address postalAddress;
....
代码
....
session.save(user.getAddress());
session.save(user.getPostalAddress());
.....
如果两个地址相同怎么办?
答案 0 :(得分: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.address
和user.postalAddress
列。