用戶.javapackage com.spring.demo.model;import java.util.Date;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.Lob;import javax.persistence.OneToOne;import javax.persistence.Table;import javax.persistence.Transient;@Entity@Table(name="user")public class User { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="user_id") private int id; private String fName; private String lName; @Column(unique=true,nullable=true) private String email; @Column(unique=true,nullable=true) private long mobile; private Date dob; @Lob private byte[] image; @Transient private String base64Image; @OneToOne(cascade=CascadeType.ALL,fetch =FetchType.EAGER) @JoinColumn(name="userCredential_id") private UserCredential userCredential; @OneToOne(cascade=CascadeType.ALL,fetch =FetchType.EAGER) @JoinColumn(name="add_id") private Address address; public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getfName() { return fName; } public void setfName(String fName) { this.fName = fName; } public String getlName() { return lName; } public void setlName(String lName) { this.lName = lName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public long getMobile() { return mobile; } public void setMobile(long mobile) { this.mobile = mobile; } public Date getDob() { return dob; }
2 回答

慕雪6442864
TA貢獻1812條經驗 獲得超5個贊
您似乎正在嘗試對兩個雙向關系進行建模:
User
<->UserCredentials
和:
User
<-> UserAddress
。
但是您真正在創建以下四種關系:
User
-> UserCredentials
User
<- UserCredentials
User
-> UserAddress
User
<- UserAddress
為了解決這個問題,您需要使用mappedBy
.

狐的傳說
TA貢獻1804條經驗 獲得超3個贊
問題在于反向引用。Hibernate 無法為您維護這一點。假設您保存了用戶對象。它創建一個憑證行并生成 id。它創建地址和 ID。它更新用戶對象上的 cred_id 和 add_id,然后為其創建一行并生成 id 并返回該值。此時您需要將您的用戶對象添加到憑證和地址并再次保存。
添加回答
舉報
0/150
提交
取消