我需要为用户上传地址。用户有两个地址,地址和邮政地址,如果这些地址彼此不同,我会保存两个地址很容易,但是如果地址相同,如何保持 ID 相同?
用户类
private Address address;
private Address postalAddress;
....
代码
....
session.save(user.getAddress());
session.save(user.getPostalAddress());
.....
如果两个地址相同怎么办?
我需要为用户上传地址。用户有两个地址,地址和邮政地址,如果这些地址彼此不同,我会保存两个地址很容易,但是如果地址相同,如何保持 ID 相同?
用户类
private Address address;
private Address postalAddress;
....
代码
....
session.save(user.getAddress());
session.save(user.getPostalAddress());
.....
如果两个地址相同怎么办?
您不必关心这些地址是否相同。使用 保存实体后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
列。