jpa oneToMany список не обновляется - PullRequest
0 голосов
/ 22 января 2020

У меня есть два класса Webtoon:

@Entity
@Data
@NoArgsConstructor
public class Webtoon {

    @Id //The unique id of the webtoon. 
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy="webtoon", orphanRemoval = true)
    @CollectionTable(name= "list_of_episodes")
    List<Episode> listOfEpisodes = new ArrayList<>();

    @Column(name= "price", unique = false, nullable = false)
    private BigDecimal price;

    private String repositoryGeneratedId;


    /**
     * Add episode in the list
     * @param episode
     */
    public void addEpisode(Episode episode) {
        listOfEpisodes.add(episode);
        episode.setWebtoon(this);
    }

    /**
     * Remove episode in the list
     * @param episode
     */
    public void removeEpisode(Episode episode) {
        listOfEpisodes.remove(episode);
        episode.setWebtoon(null);
    }

    /**
     * Root url where all files are hosted in nexus
     * @return
     */
    @JsonIgnore
    public String getRootUrl() {
        return this.companyId+"/webtoon/webtoon-"+this.repositoryGeneratedId;
    }


}

и Эпизод

@Entity
@Data
@NoArgsConstructor
public class Episode {

    @Id //The unique id.
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;

    @Column(name= "title", unique = false, nullable = false)
    private String title;

    @Column(name= "description", unique = false, nullable = false)
    private String description;

    @Column(name= "price", unique = false, nullable = false)
    private BigDecimal price;

    @OneToOne(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
    private Image icon;

    @OneToOne(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
    private Image episodeNexus;

    private String repositoryGeneratedId;

    @JsonIgnore
    @ManyToOne(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
    @JoinColumn(name="webtoon_id")
    Webtoon webtoon;




}

Это мой тест:

  1. Я создал вебтон
  2. Я создал эпизод
  3. Добавьте эпизод в список episodeList с помощью addEpisode
  4. Создайте объект episodeNexus и сохраните все.

В моем списке episodeList у меня есть эпизод создан, но эпизод Nexus имеет значение Null. Почему список не обновляется автоматически?

Когда я снова выбираю вебтун по Id, у меня есть правильный список с элементом, созданным внутри эпизода.

Как после обновления Episode также можно обновить мой вебтун?

1 Ответ

0 голосов
/ 22 января 2020

использование однонаправленного отображения в вашем классе, двунаправленное отображение иногда создает проблемы. @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinColumn(name = "foreign-key-name")List<Episode> listOfEpisodes = new ArrayList<>(); и удалите аннотацию @ManyToOne из таблицы Episode

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