Двунаправленное отношение JPA Hibernate заканчивается нулевым указателем - PullRequest
0 голосов
/ 13 мая 2018

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

Сущность Моя версия выглядит следующим образом:

@Table(name="change_log_version")
@Entity
public class ChangeLogVersionEntity {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private long id;

   @Column(name="version")
   private String version;

   @Column(name="date")
   private LocalDateTime date;

   @OneToMany(mappedBy = "version", cascade=CascadeType.ALL, fetch = 
   FetchType.EAGER)
   public List<ChangeLogEntity> changeLogEntities;

   public void addChangeLog(ChangeLogEntity changeLogEntity) {
      this.changeLogEntities.add(changeLogEntity);

      changeLogEntity.setVersion(this);
  }

...

}

Сущность Мой журнал изменений выглядит следующим образом:

@Table(name="change_log")
@Entity
public class ChangeLogEntity {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private long id;

   @Column(name="description")
   private String description;

   @Column(name="added")
   private boolean isAdded;

   @Column(name="modified")
   private boolean isModified;

   @Column(name="deleted")
   private boolean isDeleted;

   @Column(name="public")
   private boolean isPublic;

   @Column(name="date")
   private LocalDateTime date;

   @ManyToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
   @JoinColumn(name = "version_id")
   private ChangeLogVersionEntity version;
  ...
 }

Я новичок в спящем режиме, и я застрял в нулевом указателе, добавив журнал изменений в версию.Что мне нужно изменить для архивации отношения?

Заранее большое спасибо:)

1 Ответ

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

Это потому, что список changeLogEntites не инициализирован.

Вы должны инициализировать его в объявлении

@OneToMany(mappedBy = "version", cascade=CascadeType.ALL, fetch =  FetchType.EAGER)
public List<ChangeLogEntity> changeLogEntities = new ArrayList<>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...