我有一个实体 任何人都能解释我在实体中定义的前任和后继的关系吗?
喜欢
我有多个步骤
步骤1,步骤2,步骤3,步骤4,步骤5
我们只是从它的前任中走出来的那一步
所以对于T_DATA_STEP表数据如下
步骤5的前身是=步骤4,步骤3
步骤4的前身是=步骤3
步骤3的前身是=步骤2
步骤2的前身是=步骤1
步骤1没有前任
现在我的实体就像下面的
@Entity
@Table(name = "T_DATA_STEP")
public class DataStepEntity implements DBEntity, Serializable {
@Id
@Column(name = "ID", nullable = false, unique = true)
@GenericGenerator(name = "DATA_STEP_ID", strategy = "native")
@GeneratedValue(generator = "DATA_STEP_ID")
private Long id;
@ManyToMany(targetEntity = DataStepEntity.class, fetch = FetchType.EAGER)
@JoinTable(name = "T_WKF_PREDECESSOR", joinColumns = @JoinColumn(name = "DATA_STEP_ID"))
@Fetch(FetchMode.SUBSELECT)
@JsonIgnore
private Collection<DataStepEntity> predecessor;
@ManyToMany(mappedBy="predecessor",fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
@JsonIgnore
private Collection<DataStepEntity> successor;
}
所以我的问题是
当我获得第4步的DataStepEntity时,它会给我前身作为步骤3,后继作为步骤5在hibernate中。
我想了解继任者的整个取得。
如何将步骤5绑定为步骤4的后续步骤?
答案 0 :(得分:0)
在DataStepEntity
中,后继者之间存在反身@ManyToMany
关系。 JoinTable
表({1}}表(DataStepEntity实体的表)有两个外键T_DATA_STEP
。一列将是DataStepEntity
的Id,另一列是其后继的Id。
每个DataStepEntity
将在此表中为每个后继者添加一个条目。例如,如果您的Step4只有一个后继者Step5,则会在ID列中显示Id为Step4的条目,并在后续ID列中显示Step5的ID。
该过程与指向不同实体的@ManyToMany
关系相同,但创建的JoinTable
中的外键指向同一个表。
对于前一种情况,它与后继者相同。将有另一个JoinTable,其中包含DataStepEntities及其前身的ID。