У меня есть приложение Spring jpa с сущностью «Report» и «ReportRepository», которое расширяет CrudRepository.
В репозитории ReportRepository я реализовал метод поиска отчетов по его атрибуту «reportNode», например:
@Data
@Builder
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Entity
public class Report {
@Id
@GeneratedValue(strategy = AUTO)
@EqualsAndHashCode.Include
private Long id;
private Long authorId;
private Long verifyingObserverId;
private LocalDateTime creationDate;
private LocalDateTime verificationDate;
private String title;
@Lob
@Column(length=2048)
private String description;
private boolean completed;
private boolean verified;
private String joinParameter;
private String reportNode;
@Lob
@Column(length=3060)
private String hl7;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "requested_procedure_id")
private RequestedProcedure requestedProcedure;
@OneToMany(mappedBy = "report",
cascade = CascadeType.ALL,
orphanRemoval = true)
private List<ReportVersion> reportVersions;
}
public interface ReportRepository extends CrudRepository<Report, Long> {
List<Report> findByReportNode(String reportNode);
}
Когда я пытаюсь использовать этот метод, передавая ненулевой параметр, он работает нормально, возвращая список найденных отчетов, но, когда я передаю нулевой параметр, метод никогда не прекращает свое выполнение.
Для ясности, это работает:
List<Report> pendingReports = reportRepository.findByReportNode("");
Но это никогда не вернется:
List<Report> pendingReports = reportRepository.findByReportNode(null);
Он также не генерирует никаких исключений или ошибок.
Я хотел бы знать, почему это не удается, и как я могу найти все объекты в таблице, которые имеют нулевой параметр с пружиной jpa.
Заранее спасибо
EDIT:
Я пытался создать специальный метод для поиска нулевых значений, например:
reportRepository.findByReportNodeIsNull()
Но поведение такое же. Казнь зависает.