Вызов findById (id) возвращает значение null, хотя я на 100% уверен, что элемент существует в базе данных с таким же идентификатором.
Мой класс репозитория:
public interface ItemRepository extends Repository<Item, String>, JpaRepository<Item, String>
Мой основной класс:
itemRepository.findById(input.getItemId()).get();
Обратите внимание, что этот вопрос может звучать похоже на Spring boot JPA без возврата существующего результата используя findById , но в его случае данные никогда не вернутся, независимо от того, сколько раз он вызывал findById. Для меня в моем отладчике, если я оцениваю строку, содержащую findById
дважды, со второй попытки я получаю результат из базы данных.
- Поскольку я могу в конечном итоге получить объект, это означает, что я указываю на правильную базу данных.
- Я не использую @Cache в любом месте моей кодовой базы
- Данные либо возвращаются в виде правильной записи в БД, либо в виде нулевого значения - никогда не отображаются как поврежденные / грязные данные
- Я не использую операции @ Asyn c JPA
Буду признателен, если любой может указать мне правильное направление, как изолировать эту проблему. Или, если это известная ошибка JPA.
EDIT - изображение, показывающее результат одной и той же строки кода до и после нажатия кнопки «выполнить» дважды. Обратите внимание, что результат равен нулю в первый раз, и результат имеет реальное значение во второй раз.
И после нажатия оцените второй раз:
My application.properties:
spring.datasource.url=jdbc:mysql://127.0.0.1/myDb?useSSL=false
# Hibernate config
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
logging.level.org.hibernate.SQL=DEBUG
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true