问题描述
我有一个关于带有 @EmbeddedId 的 @OneToMany 的问题。 这是错误: 从 ch.xxx.sp_model.sustainability.model.flows.flow.FlowTemplate 引用 ch.xxx.sp_model.sustainability.model.processes.ProcessTemplate 的外键具有错误的列数。应该是 2 这些是我的课程: 1.带有复合Key的流程模板:
@Data
@Entity
public class ProcessTemplate {
@EmbeddedId
private ProcessTemplateId id;
private String name;
@ManyToOne
@JoinColumn(name = "fk_referenced_flow_base",referencedColumnName = "id")
private FlowBase referenceProduct;
@ManyToOne
@JoinColumn(name = "fk_process_base",referencedColumnName = "id")
private ProcessBase processBase;
@OneToMany
@JoinColumn(name="processTemplate")
private Set<FlowTemplate> flowsTemplate;
// @OneToMany
// @JoinColumn(name="processTemplate")
// private Set<ElementaryFlowTemplate> elementaryFlowsTemplate;
@ManyToOne
@JoinColumn(name = "fk_source_info",referencedColumnName = "id")
private SourceInfo sourceInfo;
@Enumerated(EnumType.STRING)
private Validation validation;
@OneToMany(cascade = CascadeType.ALL,orphanRemoval = true)
@JoinColumn(name="processTemplate")
private Set<BaseEnvironmentalImpact> environmentalImpacts;
}
2.ProcessTemplateId(ProcessTemplate的复合Id):
@Embeddable
public class ProcessTemplateId implements Serializable {
@Column(name = "process_template_id")
private UUID processTemplateId;
@Column(name = "reference_product_id")
private UUID referenceProductId;
public ProcessTemplateId() {
}
public ProcessTemplateId(UUID processTemplateId,UUID referenceProductId) {
this.processTemplateId = processTemplateId;
this.referenceProductId = referenceProductId;
}
public UUID getProcessTemplateId() {
return processTemplateId;
}
public UUID getReferenceProductId() {
return referenceProductId;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof ProcessTemplateId)) return false;
ProcessTemplateId that = (ProcessTemplateId) o;
return Objects.equals(getProcessTemplateId(),that.getProcessTemplateId()) &&
Objects.equals(getReferenceProductId(),that.getReferenceProductId());
}
@Override
public int hashCode() {
return Objects.hash(getProcessTemplateId(),getReferenceProductId());
}
}
3.FlowTemplate 有一个@ManyToOne 到 ProcessTemplate
@Data
@Entity
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public class FlowTemplate extends AbstractFlowTemplate {
private String name;
@ManyToOne
@JoinColumn(name = "fk_flow_base",referencedColumnName = "id")
private FlowBase flowBase;
@ManyToOne
@JoinColumn(name = "fk_linked_process_base",referencedColumnName = "id")
private ProcessBase linkedProcessBase;
@ManyToOne
@JoinColumns({@JoinColumn(name = "process_template_id",referencedColumnName = "process_template_id"),@JoinColumn(name = "reference_product_id",referencedColumnName = "reference_product_id")})
private ProcessTemplate linkedProcessTemplate;
@ManyToOne
@JoinColumns({
@JoinColumn(
name="process_id",referencedColumnName = "process_id"),@JoinColumn(
name="reference_product_id",referencedColumnName = "reference_product_id")
})
private ProcessTemplate processTemplate;
}
问题在这里:
@OneToMany
@JoinColumn(name="processTemplate")
private Set<FlowTemplate> flowsTemplate;
但我不知道如何设置这种单向关系。 请注意,流程模板有一组流模板,这些流模板具有链接的流程模板(不是逆关系),但这不是双向关系。是简单的单向 oneToMany 和 ManyToOne。如何设置一对多?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)