簡體   English   中英

JPA自動生成的密鑰未反映在子表的外鍵中

[英]JPA auto-generated key not reflected in foreign key of child table

父表:

@Table(name="parent_table_t")
public class ParentTable implements Serializable {

@Id
@Column(name="contact_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer contactId;
---------
---------
@OneToOne (cascade = CascadeType.ALL, mappedBy = "parentTable")
private ChildTable childTable;
}

子表:

@Table(name="child_table_t")
public class ChildTable implements Serializable {

@Id
@Column(name="child_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer childId;

@Column(name="contact_id")
private Integer contactId;

@JoinColumn(name="contact_id", referencedColumnName = "contact_id", insertable=false, updatable=false)
@OneToOne(cascade = CascadeType.ALL)
private ParentTable parentTable;
}

我的要求是在parent_table_t中生成contact_id時,應該在保存時將其復制到child_table_t的contact_id中。

當我在父表實體上調用saveAndFlush / save時,它是:為Parent-> contact_id生成自動增量。 但是Child_table_t - > contact_id始終為null。 有人可以幫忙嗎。 我正在使用帶有spring-boot和JPA的in-memorty hsqldb。

您使用insertable = false,updatable = false標記了@JoinColumn的關系,可能是因為您也有列的整數映射。 不幸的是,這些設置阻止了JPA使用關系中的值設置它,而是強制使用contactId屬性中的值設置列。

將insertable = false,updatable = false放在@Column上。

暫無
暫無

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

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