Java - 使用地址对象更新用户对象的两个复杂字段

我在玩 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 @GeneratedValue

private int userId;

private String userName;

@Temporal(TemporalType.DATE)

private Date joinedDate;

@Embedded

private 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;

}

}


烙印99
浏览 118回答 1
1回答

料青山看我应如是

发生这种情况是因为您仍在使用相同的地址对象。如果您希望它们是单独的地址,则必须创建一个新地址。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 addressaddr.setStreet("Office Street");addr.setCity("Office City");addr.setState("Office State");addr.setPincode("Office PinCode");user.setOfficeAddress(addr); 当您将地址设置为家庭地址,addr并且用户homeAddress正在引用相同的 Address 对象时,对它的更改将反映在两个地方。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java