Спящий однонаправленный oneToMany FK 0 вместо истинного идентификатора - PullRequest
0 голосов
/ 14 мая 2018

Я бьюсь уже несколько дней с гибернацией и отношением oneToMany. Я надеюсь, что кто-то может помочь мне ...

У меня есть 2 объекта: версия и журнал изменений. Версия имеет список журналов изменений.

Версия Entity:

@Table(name="change_log_version")
@Entity
public class ChangeLogVersionEntity {
  ...
  @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
  @JoinColumn(name= "version_id")
  public List<ChangeLogEntity> changeLogEntities = new ArrayList<>();
  ...

Изменить журнал:

@Table(name="change_log")
@Entity
public class ChangeLogEntity {
  ...
  @Column(name="version_id")
  private long versionId;
  ...

Теперь я могу:

  1. для создания объекта Version
  2. создать объект журнала изменений
  3. Создание списка и добавление объекта журнала изменений из 2. в список
  4. Установить список с объектом от 3. до объекта Version
  5. вызов метода save () из моего внедренного репо версии crud и сохранение объекта версии
  6. Версия вставляется в таблицу версий, а журнал изменений вставляется в версию журнала изменений с FK до версии.

Работает нормально, пока только мой FK не будет обновляться в объекте журнала изменений (см. Вложение)

При отладке упомянутого потока -> FK остается 0, даже если IDS установлены правильно .

1 Ответ

0 голосов
/ 15 мая 2018

Я нашел решение для моей проблемы: Чтобы ссылаться на версию в журнале изменений, я использую первичный ключ версии в качестве внешнего ключа журнала изменений. Мое отображение @oneToMany работает отлично. Моя сущность журнала изменений состоит из fk, который также вызвал мои проблемы. Fk не должен быть частью сущности (потомка), которую вы хотите сослаться на класс владельца. После удаления фк все работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...