#java #jpa #spring5
#java #jpa #spring5
Вопрос:
Я только что обновил свой проект до spring5, что вызывает приведенную ниже ошибку для кода, который отлично работал с более ранней версией spring.
Проблема в том, что JPA должен сопоставить aNumber с aNumber, но он не делает этого, принимая aNumber как aNumber, а не aNumber, что вызывает эту проблему.
Я вижу один поток для spring team, но не вижу разрешения здесь: https://github.com/spring-projects/spring-data-jpa/issues/1247
Я пытался искать везде, но не нашел ничего полезного.
Класс домена:
@Data
@Entity
public class Statistics {
@Id
private Long id;
private String aNumber;
private Integer dispositionCode;
@CreatedDate
private OffsetDateTime created;
}
метод в интерфейсе репозитория:
Optional<Statistics> findFirstByIdAndANumberAndDispositionCodeInOrderByCreatedDesc(Long id, String aNumber, Integer... dispositionCode);
Примечание: я знаю, что id может возвращать уникальный результат, просто чтобы сделать точный пример, который я внес в это изменение.
Ответ №1:
Я столкнулся с этой проблемой после обновления версии JPA, в котором указано, что все имена были правильными и отображались идеально.
Решение, которое я нашел, заключалось в определении собственного запроса в аннотации @Query JPA spring data, поскольку проблема возникала, когда JPA пытался создать именованный запрос JPA.
@Query(nativeQuery = true, value = "Your Query here")
Optional<Statistics> findFirstByIdAndANumberAndDispositionCodeInOrderByCreatedDesc(Long id, String aNumber, Integer... dispositionCode);
Возможно, это не лучшее решение, но в моем случае я не должен был менять версию, поскольку она исходила от родительского POM, и это было самое простое решение, которое я мог сделать.