欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用JPA單項一對多外鍵關(guān)聯(lián)

 更新時間:2022年06月21日 15:40:11   作者:走路的貓頭鷹  
這篇文章主要介紹了使用JPA單項一對多外鍵關(guān)聯(lián),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

JPA單項一對多外鍵關(guān)聯(lián)

一對多即一個對象中包含又另外一個對象的集合。

User主表代碼

@Table(name="USER")
@Entity
public class User {
    private Integer id;
    private String username;
    private String userpassword;
    private String useraddress;
    private List<Order> listOrder;

    @JoinColumn(name="LIST_ORDER")
    @OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.REMOVE)
    public List<Order> getListOrder() {
        return listOrder;
    }
    public void setListOrder(List<Order> listOrder) {
        this.listOrder = listOrder;
    }
    @Id
    @TableGenerator(name="PK_PRIMARY",
    table="order_user_sque",
    pkColumnName="pk_column_name",
    pkColumnValue="pk_column",
    valueColumnName="pk_column_value",
    allocationSize=1)
    @GeneratedValue(strategy=GenerationType.TABLE,generator="PK_PRIMARY")
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }

    @Column(name="USERNAME")
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }

    @Column(name="USERPASSWORD")
    public String getUserpassword() {
        return userpassword;
    }

    public void setUserpassword(String userpassword) {
        this.userpassword = userpassword;
    }

    @Column(name="USERADDRESS")
    public String getUseraddress() {
        return useraddress;
    }
    public void setUseraddress(String useraddress) {
        this.useraddress = useraddress;
    }
}

代碼中:@JoinColumn(name="LIST_ORDER") -> 表示將外鍵名設(shè)置為LIST_ORDER

@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.REMOVE) -> OneToMany中fetch表示查詢時的加載模式[懶加載還是積極加載],cascade屬性表示要級聯(lián)操作的模式,此處為刪除主表后從表一并刪除。

Order從表代碼

@Entity
@Table(name="ORDER_USER")
public class Order {
    private Integer id;
    private String orderName;
    //private User user;

    @Id
    @GeneratedValue
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getOrderName() {
        return orderName;
    }
    public void setOrderName(String orderName) {
        this.orderName = orderName;
    }
}

JPA外鍵關(guān)聯(lián)保存踩坑

比如:用戶表關(guān)聯(lián)了用戶地址的主鍵 

在用戶還沒有設(shè)置地址的時候 能單獨添加用戶和更新用戶的個人信息 但是當(dāng)用戶添加地址的時候去更新數(shù)據(jù)的時候 jpa卻是插入數(shù)據(jù) 而不是更新數(shù)據(jù)、這個時候用戶表中的唯一字段則會報錯、信息已存在!

這樣關(guān)聯(lián)的

一度迷茫

后來通過sql打印日記 查看到 

jpa 在進行關(guān)聯(lián)操作的時候 會通過外鍵查詢一次、由于還沒綁定外鍵 查詢?yōu)榭?這時候jpa就會以為是新增操作,則進行insert 操作

解決

去掉  optional = false

源碼提示

翻譯

/**
      *(可選)關(guān)聯(lián)是否可選。 如果設(shè)置
      *為false,則必須始終存在非空關(guān)系。
     */

細節(jié)決定成敗

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Mybatis的配置文件入門必看篇

    基于Mybatis的配置文件入門必看篇

    這篇文章主要介紹了Mybatis的配置文件入門,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java Map集合詳解與演示

    Java Map集合詳解與演示

    Map用于保存具有映射關(guān)系的數(shù)據(jù),Map集合里保存著兩組值,一組用于保存Map的ley,另一組保存著Map的value,可以理解為Map中的元素是兩個對象,一個對象作為鍵,一個對象作為值。鍵不可以重復(fù),但是值可以重復(fù)
    2021-11-11
  • JVM:晚期(運行期)優(yōu)化的深入理解

    JVM:晚期(運行期)優(yōu)化的深入理解

    今天小編就為大家分享一篇關(guān)于JVM:晚期(運行期)優(yōu)化的深入理解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 詳解基于Mybatis-plus多租戶實現(xiàn)方案

    詳解基于Mybatis-plus多租戶實現(xiàn)方案

    這篇文章主要介紹了詳解基于Mybatis-plus多租戶實現(xiàn)方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • SpringBoot JPA實現(xiàn)增刪改查、分頁、排序、事務(wù)操作等功能示例

    SpringBoot JPA實現(xiàn)增刪改查、分頁、排序、事務(wù)操作等功能示例

    本篇文章主要介紹了SpringBoot JPA實現(xiàn)增刪改查、分頁、排序、事務(wù)操作等功能示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • 解決java web應(yīng)用線上系統(tǒng)偶發(fā)宕機的情況

    解決java web應(yīng)用線上系統(tǒng)偶發(fā)宕機的情況

    這篇文章主要介紹了解決java web應(yīng)用線上系統(tǒng)偶發(fā)宕機的情況,具有好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • java實現(xiàn)飯店點菜系統(tǒng)

    java實現(xiàn)飯店點菜系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)飯店點菜系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • SpringCloud中的Ribbon負載均衡器詳細解析

    SpringCloud中的Ribbon負載均衡器詳細解析

    這篇文章主要介紹了SpringCloud中的Ribbon負載均衡器詳細解析,Ribbon 是一個基于 HTTP 和 TCP 的客戶端負載均衡工具,它基于 Netflix Ribbon 實現(xiàn),通過封裝可以讓我們輕松地將面向服務(wù)的 REST 模版請求自動轉(zhuǎn)換成客戶端負載均衡的服務(wù)調(diào)用,需要的朋友可以參考下
    2024-01-01
  • 淺談Java并發(fā)編程中的線程

    淺談Java并發(fā)編程中的線程

    這篇文章主要介紹了淺談Java并發(fā)編程中的線程,操作系統(tǒng)運行一個程序,就會創(chuàng)建一個進程,在一個進程里可以創(chuàng)建多個線程,因此線程也叫做輕量級進程,需要的朋友可以參考下
    2023-08-08
  • 一步步教你搭建Scala開發(fā)環(huán)境(非常詳細!)

    一步步教你搭建Scala開發(fā)環(huán)境(非常詳細!)

    Scala是一門基于jvm的函數(shù)式的面向?qū)ο缶幊陶Z言,擁有比java更加簡潔的語法,下面這篇文章主要給大家介紹了關(guān)于搭建Scala開發(fā)環(huán)境的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-04-04

最新評論