У меня есть две сущности со связью @OneToMany
Первая сущность
@Entity
@Table(name = SchemaConstant.RESCHEDULE_TABLE_NAME)
public class RescheduleRequestEntity extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "RESCHEDULE_ID_GEN")
@SequenceGenerator(
name = "RESCHEDULE_ID_GEN",
allocationSize = 1,
sequenceName = SchemaConstant.RESCHEDULE_SEQUENCE_NAME)
private Long id;
private String adviseNo;
private LocalDate adviseDate;
private Long customerId;
@Enumerated(value = EnumType.STRING)
private AdviceStatus status;
@OneToMany(mappedBy = "reschedule", fetch = FetchType.LAZY)
private List<RescheduleDetailEntity> accountDetails;
}
Вторая сущность
@Entity
@Table(name = "RESCHEDULE_DETAILS")
public class RescheduleDetailEntity extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "RESCHEDULE_DETAILS_ID_GEN")
@SequenceGenerator(
name = "RESCHEDULE_DETAILS_ID_GEN",
allocationSize = 1,
sequenceName = "S_RESCHEDULE_DETAILS")
private Long id;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ACCOUNT_ID", nullable = false)
private AccountEntity account;
@Enumerated(value = EnumType.STRING)
private AdviceStatus status;
@Enumerated(value = EnumType.STRING)
private TenureType tenureType;
private Integer tenure;
@ManyToOne
@JoinColumn(name = "ADVISE_ID")
private RescheduleDetailEntity reschedule;
}
И Перечисление
public enum AdviceStatus {
OPEN,
ACTIVE,
CLOSE
}
Я хочу получить данные с условием Как
SELECT *
FROM RESCHEDULEREQUESTENTITY R, RESCHEDULEDETAILENTITY D
WHERE R.ID = :PID
AND D.ADVISEID = R.ID
AND D.STATUS <> "CLOSE"
"Извлечение данных из RescheduleRequestEntity с данными из RescheduleDetailEntity, где RescheduleDetailEntity.status не равно" CLOSE ", где" Status "- это тип Enum".
Я создаю класс репозитория JPA, например, следующий для выборочных данных
@Repository
public interface RescheduleRequestRepository
extends JpaRepository<RescheduleRequestEntity, Long>, JpaSpecificationExecutor {
Optional<RescheduleRequestEntity> findByAdviseNo(String adviceNo);
Optional<RescheduleDetailEntity> findByIdAndAccountDetails_StatusNot(
Long adviceId, AdviceStatus status);
}
, но это не выборка данных с моим желаемым условием, это не игнорирование данных, которые имеют статус "ЗАКРЫТЬ"