У меня есть приложение Java / JPA / Hibernate, у которого есть бэкэнд MySQL. Часть базы данных хранит данные о продуктах, которые импортируются из ряда источников, поэтому у нас есть записи импорта и истории импорта. В записи импорта говорится, что мы импортировали некоторое количество продуктов в этот день из этого источника, и история импорта связывает импорт с продуктами, импортированными во время этого импорта. Это связано с тем, что товар может появляться в нескольких импорте, поэтому сохраняется история его появления и времени.
purchased_product -< purchased_product_import_history >- import
Недавно мы заметили нечто очень странное, когда создавали новую запись о продукте. Он создает новый продукт, импортирует и импортирует историю, как и ожидалось, но затем создает другую запись истории , которая указывает на совершенно другой (уже существующий) импорт. Эта фиктивная запись импорта всегда одинакова (всегда имеет идентификатор 188).
- Мы предполагали, что в коде есть что-то, указывающее на 188: нет.
- Мы отладили с помощью операции в Java-коде, где создается новый продукт. Генерируется только правильная история импорта.
- Кажется, что фиктивная ассоциация создается немедленно
- Мы включили ведение журнала SQL (hibernate SqlStatementLogger), и существует только один оператор вставки, который проверяет входящие значения, он показывает правильный идентификатор импорта, а не поддельный.
- В базе данных нет триггеров или хранимых процедур
- Мы включили журнал mysql и просмотрели все журналы во время добавления продукта, и есть только 1 оператор «insert into купленному_продукту_импорта_history», а значение 188 нигде не видно.
Мы достаточно уверены, что теперь это не код Java, и что-то в MySQL вызывает вставку, но у нас нет идей, откуда это исходит. Кто-нибудь может помочь?
Java 8, MySQL 5.6.38
Заранее спасибо.