@smetannicPum

Как использовать методы при @ManyToOne связи в рамках JpaRepository?

Есть две сущности:
@Entity
@Table(name = "AUTHORS", schema = "NEWS_SCHEMA")
@Getter
@Setter
@NoArgsConstructor
public class Author {

    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

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

    @Column(name = "SURNAME")
    private String surname;

    @Column(name = "DATE_OF_BIRTH")
    private Date dob;

    @OneToMany(cascade = {CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH},
            mappedBy = "authorOfArticle")
    private List<Article> articlesOfAuthor;

    public void addArticleToAuthor(Article article) {

        if (articlesOfAuthor == null) {
            articlesOfAuthor = new ArrayList<>();
        }
        articlesOfAuthor.add(article);

        article.setAuthorOfArticle(this);
    }


    public Author(String name, String surname, Date dob) {
        this.name = name;
        this.surname = surname;
        this.dob = dob;
    }
}

@Entity
@Table(name = "ARTICLES",schema = "NEWS_SCHEMA")
@Getter @Setter
@NoArgsConstructor
public class Article {

    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name = "TITLE")
    private String title;

    @Column(name = "CONTENT")
    private byte[] content;

    @Column(name = "CATEGORY_ID")
    int categoryId;

    
    @ManyToMany(cascade = {CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH})
    @JoinTable(
            name = "ARTICLES_CATEGORIES",
            schema = "NEWS_SCHEMA",
            joinColumns = @JoinColumn(name = "ARTICLE_ID"),
            inverseJoinColumns = @JoinColumn(name = "CATEGORY_ID"))

    private List<Category> categoriesInArticle;

    @ManyToOne(cascade = {CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH})
    @JoinColumn(name = "AUTHOR_ID" )
    private Author authorOfArticle;

    public Article( String title, int categoryId, Author author) {
        this.title = title;
        this.categoryId = categoryId;
        this.authorOfArticle = author;
    }
}


Для выполнения CRUD операций я использую JpaRepository,но я не понимаю как я должен вызывать метод
addArticleToAuthor если за меня все делает Jpa,я не могу вписать его в транзакцию,как например,при работе с сессией.Заранее спасибо за любые пояснения.
  • Вопрос задан
  • 432 просмотра
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix Куратор тега Spring
Java Software Engineer
Вам просто необходимо вызвать метод void addArticleToAuthor(Article article)
А в конце вызвать метод author.save()
Вот, полезная ттатья по ManyToOne & OneToMany
https://thorben-janssen.com/best-practices-many-on...
https://www.baeldung.com/hibernate-one-to-many
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы