簡體   English   中英

如何在外鍵與聯接表和單向休眠狀態下進行一對一關聯

[英]How to do One to One association in hibernate with foreign key and join table and unidirectional

我希望以單向方式與聯接表建立一對一關聯。 --

桌子:

  1. A(A_id,D_id,A_Data)
  2. B(A_id,C_id)//連接表僅包含A和C之間的關系
  3. C(C_id,C_Data)

     Class A { . . @OneToOne(cascade = CascadeType.ALL) @JoinTable(name = "B", joinColumns = @JoinColumn(name = "A_id", referencedColumnName = "A_id"), inverseJoinColumns = @JoinColumn(name = "C_id", referencedColumnName = "C_id")) private C c; } 

我在jpa 2.0中使用了休眠模式。 實體D在模型中不重要,因此被忽略。 我只希望讀取數據,因此不必擔心插入/更新/刪除用例,但是在這種情況下也可以建議最佳實踐。

此設置無效。 有人可以提出正確的建議嗎?

它給出以下異常

org.hibernate.MappingException: Unable to find column with logical name: A_id in org.hibernate.mapping.Table(A) and its related supertables and secondary tables

為了得到您想要的模式:

    // Given the following C entity
    @Entity
    public class C {

        @Id
        @Column(name = "C_ID")
        private long id;

        private String C_Data;

        //...
    }


    // A Entity should be 
    @Entity
    public class A {

        @Id
        @Column(name = "A_ID")
        private long id;

        private String A_Data;

        @OneToOne(cascade = CascadeType.ALL )
        @JoinTable(name = "B", joinColumns = @JoinColumn(name = "A_id"), inverseJoinColumns = @JoinColumn(name = "C_id", unique = true))
        private C c;

        //...

    }

我省略了referencedColumnName ,因此hibernate會將其映射到實體主鍵。

另請注意, B表的A_id列將為主鍵。

暫無
暫無

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

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