Mam dwie przykładowe klasy połączone relacją wiele do wielu:
@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "book_category", joinColumns = {@JoinColumn(name = "book_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "category_id", referencedColumnName = "id")})
private Set<Category> categories;
}
@Entity
@Table(name = "category")
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToMany(mappedBy = "categories", fetch = FetchType.LAZY)
private List<Book> books;
}
Kiedy chciałbym dodać sobie jakąś książkę do bazy danych to otrzymuję wyjątek:
org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: dbTest.Category; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: dtTest.Category
Jeśli usunę adnotację @GeneratedValue z klasy Category to wszystko działa bez zarzutu. Może ktoś będzie wiedział jak to rozwiązać, żeby wszystko działało poprawnie?