Данные источника jpa данных: javax.persistence.EntityNotFoundException: невозможно найти объект - PullRequest
0 голосов
/ 11 февраля 2019

Я использую в своем проекте spring jpa datatable:

https://github.com/darrachequesne/spring-data-jpa-datatables

Сегодня произошла странная вещь.
У меня следующий код в моем коде:

DataTablesOutput<Message> messages = datatableMessageRepository.findAll(input, null, spec);

Пару дней назад все работало нормально, можно ограничить результат указанным пользователем.Он перестал работать сегодня (на сегодняшний день общее количество записей для всех пользователей равно 23).

Возвращает это сообщение:

DataTables warning: table id=messageTable - javax.persistence.EntityNotFoundException: Unable to find com.mycompany.dao.entity.Message with id 4680

В базе данных есть запись 4680.

Я включил трассировку, я нашел это в журнале:

[TRACE] 2019-02-11 04:08:56.390 [http-nio-127.0.0.1-8000-exec-5] DefaultLoadEventListener - Loading entity: [com.mycompany.dao.entity.Message#4680]
[TRACE] 2019-02-11 04:08:56.392 [http-nio-127.0.0.1-8000-exec-5] DefaultLoadEventListener - Attempting to resolve: [com.mycompany.dao.entity.Message#4680]
[TRACE] 2019-02-11 04:08:56.397 [http-nio-127.0.0.1-8000-exec-5] DefaultLoadEventListener - Object not resolved in any cache: [com.mycompany.dao.entity.Message#4680]
[TRACE] 2019-02-11 04:08:56.400 [http-nio-127.0.0.1-8000-exec-5] AbstractEntityPersister - Fetching entity: [com.mycompany.dao.entity.Message#4680]

затем длинный запрос и затем:

[TRACE] 2019-02-11 04:08:56.599 [http-nio-127.0.0.1-8000-exec-5] BasicBinder - binding parameter [1] as [BIGINT] - [4680]
[TRACE] 2019-02-11 04:08:56.603 [http-nio-127.0.0.1-8000-exec-5] AbstractLoadPlanBasedLoader - Bound [2] parameters total
[TRACE] 2019-02-11 04:08:56.827 [http-nio-127.0.0.1-8000-exec-5] ResourceRegistryStandardImpl - Registering result set [com.mysql.cj.jdbc.result.ResultSetImpl@d1d2cc5]
[TRACE] 2019-02-11 04:08:56.832 [http-nio-127.0.0.1-8000-exec-5] ResultSetProcessorImpl - Processing result set
[TRACE] 2019-02-11 04:08:56.836 [http-nio-127.0.0.1-8000-exec-5] ResultSetProcessorImpl - Done processing result set (0 rows)
[TRACE] 2019-02-11 04:08:56.842 [http-nio-127.0.0.1-8000-exec-5] AbstractRowReader - Total objects hydrated: 0

Но интересно то, если я вызываю MessageRepository.findAll перед вызовом findAll хранилища данных:

List<Message> all = mr.findByUser(user);
DataTablesOutput<Message> messages = datatableMessageRepository.findAll(input, null, spec);

, тогда запрос работал!

Так почему же это так?я что-то пропустил в конфиге?

спасибо

1 Ответ

0 голосов
/ 11 февраля 2019

ОК, разобрался с проблемой.У строки есть столбец, который является внешним ключом другой таблицы, в схеме БД он имеет значение nullable, но в моем классе сущностей он имеет значение nullable = false.Поменял на nullable = true и все заработало.Но я не понимаю, почему?Может кто-нибудь, пожалуйста, объясните мне это?

спасибо

...