亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何解決spring boot插入數據時外鍵一直為零的問題?

如何解決spring boot插入數據時外鍵一直為零的問題?

海綿寶寶撒 2021-09-15 10:42:43
用戶.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


查看完整回答
反對 回復 2021-09-15
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

問題在于反向引用。Hibernate 無法為您維護這一點。假設您保存了用戶對象。它創建一個憑證行并生成 id。它創建地址和 ID。它更新用戶對象上的 cred_id 和 add_id,然后為其創建一行并生成 id 并返回該值。此時您需要將您的用戶對象添加到憑證和地址并再次保存。


查看完整回答
反對 回復 2021-09-15
  • 2 回答
  • 0 關注
  • 235 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號