@OneToMany映射JPA中的父ID为空

我在父子关系中使用javax.persistence.OneToMany关系。父ID为null,我已经阅读了Stackoverflow中的所有相关文章,但没有得到我所缺少的任何线索。

@Entity

@Table(name = "DIVERSITY_TEMPLATE")

public class DiversityTemplate implements Serializable {

private static final long serialVersionUID = 1L;

@Id

@SequenceGenerator(name = "DIVERSITY_TEMPLATE_ID", sequenceName = "DIVERSITY_TEMPLATE_ID", allocationSize = 1)

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "DIVERSITY_TEMPLATE_ID")

@Column(name = "DIVERSITY_TEMPLATE_ID")

private Integer diversityTemplateId;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "diversityTemplate", fetch = FetchType.LAZY)

private List<DiversityTemplateAttribute> attributes = new ArrayList<>();

@Entity

@Table(name = "DIVERSITY_TEMPLATE_ATTRIBUTE")

@TypeName("DiversityTemplateAttribute")

public class DiversityTemplateAttribute implements Serializable {

private static final long serialVersionUID = 1L;

@Id

@SequenceGenerator(name = "DIVERSITY_TEMPLATE_ATTR_ID", sequenceName = "DIVERSITY_TEMPLATE_ATTR_ID", allocationSize = 1)

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "DIVERSITY_TEMPLATE_ATTR_ID")

@Column(name = "DIVERSITY_TEMPLATE_ATTR_ID")

private Integer diversityTemplateAttributeId;

@ManyToOne(fetch = FetchType.LAZY)

@JoinColumn(name = "DIVERSITY_TEMPLATE_ID", nullable=false, referencedColumnName = "DIVERSITY_TEMPLATE_ID")

private DiversityTemplate diversityTemplate;

 diversityTemplateRepository.save(diversityTemplate);

{

"diversityTemplateId": 0,

"attributes": [{

"diversityTemplateId": 0,

"diversityTemplateAttributeId": 0,

}, {

"diversityTemplateId": 0,

"diversityTemplateAttributeId": 0,

}]

}

请提出建议。

回答:

通常,空FK列仅来自设置关系的一侧。

我想你有以下

DiversityTemplate diversityTemplate = ...

diversityTemplate.getAttributes().add(...)

...

diversityTemplateRepository.save(diversityTemplate);

这是错误的,因为他们DiversityTemplateAttribute不了解父母,只有父母知道他的孩子。

解决这个问题很容易,您必须在子级中设置父级引用。

diversityTemplateAttribute.setDiversityTemplate(diversityTemplate);

或者,您可以将此逻辑放入方法中,DiversityTemplate该方法会自动将属性添加到列表+设置反向引用。

以上是 @OneToMany映射JPA中的父ID为空 的全部内容, 来源链接: utcz.com/qa/418697.html

回到顶部