Hibernate jpa, не сохраняющий фасоль «многие ко многим» - PullRequest
0 голосов
/ 21 марта 2020

У меня возникла проблема при сохранении bean-компонента, содержащего другие сопоставленные bean-компоненты (многие-ко-многим). В журналах я получаю «транзакция JDB C, помеченная только для отката». Бобы Childs (те, которые помечены как mappedBy) сохраняются без проблем. При сохранении новостного бина мне нравится сохранять / обновлять теги mappedBy и авторов.

Отображение в дочернем классе автора:

    @ManyToMany(mappedBy = "authors", fetch = FetchType.EAGER,
            cascade = {CascadeType.MERGE, CascadeType.PERSIST})
    private Set<NewsModel> news = new HashSet<>();

Отображение в дочернем классе тега:

 @JsonIgnore
    @ManyToMany(mappedBy = "tags", fetch = FetchType.EAGER)
    private Set<NewsModel> news = new HashSet<>();

Отображение в классе новостей.

@ManyToMany(fetch = FetchType.EAGER,
            cascade = {CascadeType.MERGE, CascadeType.PERSIST})
    @JoinTable(
            name = "news_tag",
            joinColumns = @JoinColumn(name = "news_id", referencedColumnName = "id"),
            inverseJoinColumns = @JoinColumn(name = "tag_id", referencedColumnName = "id")
    )
    private Set<TagModel> tags = new HashSet<>();

    @ManyToMany(fetch = FetchType.EAGER,
            cascade = {CascadeType.MERGE, CascadeType.PERSIST})
    @JoinTable(
            name = "news_author",
            joinColumns = @JoinColumn(name = "news_id", referencedColumnName = "id"),
            inverseJoinColumns = @JoinColumn(name = "author_id", referencedColumnName = "id")
    )
    private Set<AuthorModel> authors = new HashSet<>();

Способ, которым я сохраняюсь:

 @Override
    public NewsModel add(NewsModel newsModel) {
        entityManager.persist(newsModel);
        return newsModel;
    }

PS Сервисный метод, из которого вызывается perist, помечается как @ Transactional

Трассировка стека из журналы: Stack trace

Заранее благодарю за внимание!

...