簡體   English   中英

添加帶有外鍵的 Hibernate 實體

[英]Add Hibernate entity with foreign key

我正在構建一個(spring boot)rest 服務,我似乎對 Hibernate 和外鍵或其他什么有一些根本性的誤解。

我有兩個實體:

@Entity
public class ClassA {

    @Id
    @Column(name = "id", nullable = false)
    private Integer id;

    @ManyToOne
    @JoinColumn(name = "class_b", nullable = false)
    private ClassB classB;

  // more properties and getters/setters left out for brevity
}
@Entity
@Table(name = "class_b")
public class ClassB {

    @Id
    @Column(name = "id", nullable = false)
    private Integer id;

    @Column(name = "name", nullable = false, length = 100)
    private String name;

  // more properties and getters/setters left out for brevity
}

ClassA 有一個指向 ClassB 的外鍵。 我希望我的用戶能夠給我一個 classA 的實例,例如

{ //instance of class A, e.g. via POST
  id: 19,
  class_b_id: 17
}

這意味着,我得到了 class A 的 ID 和 class B 的 ID。如果我想創建 class A 的實體並將其保存在數據庫中,我必須首先檢索 class B 的相應實例,調用 setClassB(.. .) 然后將實例保存到數據庫中。

我的實體甚至可能有更多實體的外鍵,我必須首先檢索這些實體,包括它們的屬性等,只是為了保存我的新實體。

這是應該的方式嗎? 或者我在這里想念什么? 有沒有一種方法可以按照我獲取外鍵的方式使用外鍵來定義實體? (我不是說:“不要使用休眠”)不首先檢索其他對象?

它只是感覺錯誤和不必要。

為什么不在這些實體之間創建雙向關系並使用 classB 來級聯 classA 的創建? 這樣您就可以立即創建/更新,而不必手動檢索和設置關系。

在您的示例中,您獲得了要創建的 classA 的 id,還有 class_b_id,您可以使用它來獲取 classB 實例並繼續創建 classA,它將附加到 classB。

暫無
暫無

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

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