我在玩 Hibernate 和 Postgres。我有一个用户类如下import javax.persistence.AttributeOverride;import javax.persistence.AttributeOverrides;import javax.persistence.Column;import javax.persistence.Embedded;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Lob;import javax.persistence.Table;@Entity@Table(name="USER_DETAILS")public class UserDetails {@Id @GeneratedValueprivate int userId;private String userName;@Temporal(TemporalType.DATE)private Date joinedDate;@Embeddedprivate Address homeAddress;@Embedded@AttributeOverrides({ @AttributeOverride(name="street", column = @Column(name="OFFICE_STREET_NAME")), @AttributeOverride(name="city", column = @Column(name="OFFICE_CITY_NAME")), @AttributeOverride(name="state", column = @Column(name="OFFICE_STATE_ABBR")), @AttributeOverride(name="pincode", column = @Column(name="OFFICE_PIN_CODE"))})private Address officeAddress;@Lob@Type(type="text")private String description;public int getUserId() { return userId;}public void setUserId(int userId) { this.userId = userId;}public String getUserName() { return userName;}public void setUserName(String userName) { this.userName = userName;}public Date getJoinedDate() { return joinedDate;}public void setJoinedDate(Date joinedDate) { this.joinedDate = joinedDate;}public String getDescription() { return description;}public void setDescription(String description) { this.description = description;}public Address getHomeAddress() { return homeAddress;}public void setHomeAddress(Address homeAddress) { this.homeAddress = homeAddress;}public Address getOfficeAddress() { return officeAddress;}public void setOfficeAddress(Address officeAddress) { this.officeAddress = officeAddress;}}
1 回答
料青山看我应如是
TA贡献1772条经验 获得超8个赞
发生这种情况是因为您仍在使用相同的地址对象。如果您希望它们是单独的地址,则必须创建一个新地址。
Address addr = new Address();
addr.setStreet("Home Street");
addr.setCity("Home City");
addr.setState("Home State Abbr");
addr.setPincode("Home PinCode");
user.setHomeAddress(addr);
addr = new Address(); // make a new address
addr.setStreet("Office Street");
addr.setCity("Office City");
addr.setState("Office State");
addr.setPincode("Office PinCode");
user.setOfficeAddress(addr);
当您将地址设置为家庭地址,addr并且用户homeAddress正在引用相同的 Address 对象时,对它的更改将反映在两个地方。
添加回答
举报
0/150
提交
取消