簡體   English   中英

Hibernate (Spring JPA): @ManyToOne JoinColumns (這是一個 EmbeddedId) 為空

[英]Hibernate (Spring JPA): @ManyToOne JoinColumns (which are an EmbeddedId) are null

我沒有看到我的錯誤,經過對 stackoverflow 和 Google 的研究后,我認為代碼應該是正確的。 但是 Hibernate (spring-boot-starter-data-jpa 2.2.4) 仍然用null填充 JoinColumns 。

這是我的OneToMany類:

@Entity
@Table(name = "tablea", schema = "")
public class TableAEntity implements Serializable {

    private static final long serialVersionUID = 7890327260188587351L;

    @EmbeddedId
    private MyId id;
    
    @OneToMany(cascade = ALL, mappedBy = "tableA", orphanRemoval = true, fetch = FetchType.LAZY)
    private List<TableBEntity> tableBentries;
    
    // Getter + Setter
}

我的EmbeddedId類:

@Embeddable
public class MyId implements Serializable {

    private static final long serialVersionUID = -8267953052238233498L;

    @Column(name = "id")
    private String id;

    @Column(name = "iddate")
    private Date iddate;

    @Column(name = "idint")
    private BigInteger idint;
    
    // Getter + Setter
}

最后是我的ManyToOne課程:

@Entity
@Table(name = "tableB", schema = "")
public class TableBEntity implements Serializable {

    private static final long serialVersionUID = -4648090658471459969L;

    @Id
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumns({
        @JoinColumn(name = "id", referencedColumnName = "id"),
        @JoinColumn(name = "iddate", referencedColumnName = "iddate"),
        @JoinColumn(name = "idint", referencedColumnName = "idint")
    })
    private TableAEntity tableA;
    
    // Some other attributes
    
    // Getter + Setter
}

如您所見,我想使用屬性( ididdateidint )作為兩個表中的組合主鍵。

當我創建TableAEntity對象時,我將幾個TableBEntity對象添加到tableBentries屬性。 對於每個TableBEntity我設置了對TableAEntity (屬性tableA )的引用。 當然, MyId (屬性id )對象已填充。

TableAEntity對象后,Hibernate 還存儲所有TableBEntity但字段ididdateidint (所有 JoinColumn 的)為null

任何的想法?

我的TableBEntity中的@Id似乎導致了問題。 如果我將它移動到另一個屬性,它會起作用。

暫無
暫無

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

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