![](/img/trans.png)
[英]JPA-Hibernate: UniqueConstraint on OneToOne & ManyToOne JoinColumns
[英]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
}
如您所見,我想使用屬性( id
、 iddate
和idint
)作為兩個表中的組合主鍵。
當我創建TableAEntity
對象時,我將幾個TableBEntity
對象添加到tableBentries
屬性。 對於每個TableBEntity
我設置了對TableAEntity
(屬性tableA
)的引用。 當然, MyId
(屬性id
)對象已填充。
TableAEntity
對象后,Hibernate 還存儲所有TableBEntity
但字段id
、 iddate
和idint
(所有 JoinColumn 的)為null
。
任何的想法?
我的TableBEntity
中的@Id
似乎導致了問題。 如果我將它移動到另一個屬性,它會起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.