Есть две сущности:
@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,я не могу вписать его в транзакцию,как например,при работе с сессией.Заранее спасибо за любые пояснения.