zoukankan      html  css  js  c++  java
  • JPA之@OneToMany、@ManyToOne、@JoinColumn

    顾名思义,@OneToMany、@ManyToOne这两个注解就是处理一对多,多对一的关系

    这两个注解是成双成对的,有了@OneToMany,一定会配置一个@ManyToOne

    OneToMany设置

    设置OneToMany的具体方法如下:

    @Entity
    public class OrderEntity {
        
        @Id
        //...
        private String id;
    
        @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "parent")
        private List<ListEntity> list = new ArrayList<ListEntity>();
    
    }

    具体说明:

      cascade 级联操作

        CascadeType. PERSIST 级联持久化 ( 保存 ) 操作
        CascadeType. MERGE 级联更新 ( 合并 ) 操作
        CascadeType. REFRESH 级联刷新操作,只会查询获取操作
        CascadeType. REMOVE 级联删除操作
        CascadeType. ALL 级联以上全部操作

      fetch 加载类型,默认情况一的方为立即加载,多的一方为延迟加载

        FetchType.LAZY   懒加载

        FetchType.EAGER  立即加载(缺省值)

      mappedBy  关系维护

        mappedBy= "parent" 表示在ListEntity类中的 parent 属性来维护关系,这个名称必须和ListEntity中的parent属性名称完全一致才行

        OneToMany必须写mappedBy,不然会多生成一张没用的中间表,因为如果没写mappedBy,JPA不知道具体怎样做关联

        

    ManyToOne设置

    设置ManyToOne的具体方法如下:

    @Entity
    public class ListEntity {
    
        @Id
        // ...
        private String id;
    
        @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumn(name = "order_id", insertable = false, updatable = false)
        private OrderEntity parent;
    
        @Column(name = "order_id")
        private String orderId;
    
    }

    具体说明:

      fetch=FetchType.LAZY的意思是select的时候懒加载,当加载ListEntity这个对象的时候,会加载他的属性,如id, name,但是不会去加载parent的属性。如果是EAGER,

      不仅会加载id,name等属性,而且会加载parent里面的属性。

      @JoinColumn与@Column标记一样,是用于注释表中的字段的。它的属性与@Column属性有很多相同之处,例如name属性是用来标识表中所对应的字段的名

      称,其它的不再详述。

      @JoinColumn与@Column相区别的是:@JoinColumn注释的是保存表与表之间关系的字段,它要标注在实体属性上(相当于外键)。而@Column标注的是表

      中不包含表关系的字段。

      在这里,@JoinColumn指的是ListEntity(多)表对应OrderEntity(一)表关联字段的名称。即ListEntity中的orderId对应OrderList中的主键Id。

     

  • 相关阅读:
    LeetCode Count of Range Sum
    LeetCode 158. Read N Characters Given Read4 II
    LeetCode 157. Read N Characters Given Read4
    LeetCode 317. Shortest Distance from All Buildings
    LeetCode Smallest Rectangle Enclosing Black Pixels
    LeetCode 315. Count of Smaller Numbers After Self
    LeetCode 332. Reconstruct Itinerary
    LeetCode 310. Minimum Height Trees
    LeetCode 163. Missing Ranges
    LeetCode Verify Preorder Serialization of a Binary Tree
  • 原文地址:https://www.cnblogs.com/xuwenjin/p/8831129.html
Copyright © 2011-2022 走看看