父表:
@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。
答案 0 :(得分:0)
您使用insertable = false,updatable = false标记了@JoinColumn的关系,可能是因为您还有一个整数映射列。不幸的是,这些设置阻止了JPA使用关系中的值设置它,而是强制使用contactId属性中的值设置列。
将insertable = false,updatable = false放在@Column上。