要求
我在两个实体之间有一个简单的一对多关系。我想使用JPA属性表达式来查找具有与所有子实体匹配的条件的父实体。
父母
@Entity
public class PcSigningStatus {
@OneToMany(cascade = CascadeType.ALL,mappedBy = "signingStatus")
private List<PcSigningProcessEvent> signingProcessEvents = new ArrayList<>();
孩子
@Entity
public class PcSigningProcessEvent {
@Enumerated(EnumType.STRING)
private ProcessEventType phase;
@ManyToOne
@JoinColumn(name = "SIGNING_STATUS_ID")
private PcSigningStatus signingStatus;
}
父存储库
public interface SigningStatusRepo extends CrudRepository<PcSigningStatus,Long> {
PcSigningStatus[] findBySigningProcessEvents_PhaseNot(ProcessEventType phase);
}
问题
假设我在数据库中只有1个父实体,而2个子实体包含不同的 phase 值。上面的查询多次返回同一父对象,具体取决于它与 phase 的值不匹配的子代数。我需要帮助,以找到仅当阶段并非在所有子实体中都存在