Управление идентификаторами таблиц соединения при вставке нескольких таблиц с использованием Hibernate - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь реализовать функциональность, которая загружает часть базы данных в другую,

Допустим, в моей базе данных есть три таблицы:

  • Сотрудник (EmpID, EmpName, BonID )
  • Счёт (AccID, AccAlias, BonID )
  • Бонус ( BonID , BonAmount)
  • Acc_Emp ( EmpID , AccID )

Мы находимся в ситуации, когда у компании есть веб-приложение, которое отображает для каждого сотрудника свои будущие бонусы, и работник с экрана может искать свои выделенные бонусы и запрашивать перевод, поэтому пользователи найдут бонус на экране и нажмут накнопка, и это переведет деньги на связанный аккаунт.

Теперь у меня есть некоторый бонус, хранящийся в другой базе данных, и мне нужно перенести определенные бонусы, а не все эти бонусы, в базу данных webapp, предполагая, чтооба имеют одинаковую схему БД (таблицы, столбцы и все)

ThПроцесс, который я пытаюсь получить, состоит в том, чтобы извлечь данные из первой БД в файле JSON , а затем загрузить их во вторую БД.

Я использую Генератор идентификаторов Hibernate , поэтому мне нужно решить три проблемы:

  1. Acc_Emp объединить таблицы , которые будут извлечены с первыми идентификаторами БД, а затемнеобходимо адаптировать к новым идентификаторам, сгенерированным Hibernate во второй БД

  2. Обе таблицы зависят от бонусной таблицы , поэтому мне нужно сначала загрузить ее, чтобы получить ключи использовать его в таблицах Employee и Account в качестве внешнего ключа, но я не могу допустить, чтобы после вставки строки Bonus он был доступен на экране, и пользователь мог инициировать перевод до того, как система введет значения Account.

  3. Я не могу добавить флаг , чтобы сделать бонус невидимым на экране, так как это требует изменения в Модели, и я не имею права делать это.

Есть ли у вас идеи Hibernate-конфигурация, которая может разрешить распределение идентификаторов перед вставкой данных ? Идея аналогична имитации вставки для получения идентификатора, с которым будут передаваться данные, и последующего использования его для обновления таблицы объединения, а затем вставки Employee, Account, Acc-Emp, Bonus.

Итак, шагибудет:

  1. Извлечение данных первой БД
  2. Получение ожидаемого идентификатора бонуса при вставке из второй БД (мы по-прежнему не вставляем просто размещение идентификаторов в БД, чтобы никто не использовал его)
  3. Обновление идентификаторов учетной записи и сотрудников с помощью правильного BonusID в файле JSON
  4. Получение ожидаемой вставки идентификаторов учетной записи и сотрудников из второй базы данных
  5. Обновление Acc-Emp с помощью идентификаторов в JSONфайл
  6. Вставьте все с правильными идентификаторами

Надеюсь, это понятно для вас, я попытался описать проблему на простом примере,

Заранее спасибо

...