簡體   English   中英

如何在 Hibernate/JPA 中的兩個表之間創建中間表?

[英]How to create intermediate table between two tables in Hibernate/JPA?

表 1:計算機表

 @Entity
 @Table ("computer")
 public class Computer{
   private int id;
   .
 }

表 2:許可證表:

 @Entity
 @Table ("licenses")
 public class Licnese{
   private int id;
   .
 }

表 3:待創建。 這是中級,應該只有兩個字段

計算機 ID | 許可證編號

許可證 ID 可以鏈接到多個計算機 ID,多個計算機 ID 可以有多個許可證。

CompID | LicneseID  
      1|2
      1|2
      2|2

在我們的例子中,計算機和許可證數據已經存在。 我們運行一個作業來填充中間表,即選擇計算機 id,從休息服務下載 lincense id,在現有數據庫中查找許可證並在中間表中創建記錄。

應該怎么做?

  1. 獨立插入或

    中間類{ private int compid private int liceid }

但是在這個主鍵中需要哪個客戶不想要。

  1. 如果是,則使用計算機或許可證實體更新,然后如何?

我知道我們需要在計算機實體中使用 ElementCollection 但如何引用許可證 ID?

@ElementCollection(targetClass = Intermediate.class)
    @CollectionTable(name = "Intermediate", joinColumns = @JoinColumn(name = "ID"))
    @AttributeOverrides({
        @AttributeOverride(name = "license ID",column = @Column(name = "License ID")),
    private List<Intermediate> intermediate;

在這種情況下我們還需要合並計算機實體嗎?

根據您要使用 Hibernate 連接表方法的描述。 如何實現連接表方法你可以參考下面提到的鏈接: http : //fruzenshtein.com/hibernate-join-table-intermediary/

您可以簡單地定義一個@ManyToMany關系,並且會自動創建 joininig 表。

@ManyToMany
@JoinTable(
  name = "licence_computer", 
  joinColumns = @JoinColumn(name = "computer_id"), 
  inverseJoinColumns = @JoinColumn(name = "licence_id"))
private Set<Licnese> licences;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM