У меня есть одно отношение много ко многим на моем sql
и вот мои 2 сущности медиа и жанр
@Entity(name = "genre")
public class Genre_entity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int genre_id;
@Column(name="genre_Nom")
private String genre_name;
@ManyToMany(mappedBy = "genres", cascade = CascadeType.PERSIST)
private Set<Media_entity> medias = new HashSet<>();
@Entity(name="media")
public class Media_entity {
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
private Integer media_id;
@Column(name = "media_Titre")
private String media_title;
@Column(name = "media_AnneeSortie")
private Integer media_year;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="typeMedia_Id")
private MediaType_entity mediaType;
@Column(name = "valid")
private boolean media_valid ;
@ManyToMany(fetch = FetchType.LAZY,cascade = CascadeType.PERSIST)
@JoinTable(
name = "media_genre",
joinColumns = {@JoinColumn(name="media_Id")},
inverseJoinColumns = {@JoinColumn(name="genre_Id")}
)
private Set<Genre_entity> genres = new HashSet<>();
Работает без проблем до тех пор, пока не захочу отредактировать таблицу "media_genre". я получил эту ошибку
object references an unsaved transient instance - save the transient instance before flushing: entity.Genre_entity
вот мой тестовый код
public void editFilm(Integer id, String mediaTitle , Integer mediaYear, String[] listGenre) {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtil.getSessionFactory().getCurrentSession();
tx = session.beginTransaction();
Media_entity media = getMediaByIdSimple(id);
media.setMedia_title(mediaTitle);
media.setMedia_year(mediaYear);
for (String str : listGenre) {
Genre_entity genre = new Genre_entity();
genre.setGenre_name(str);
media.addGenre(genre);
}
session.merge(media);
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
}
finally {
if(session != null) {
session.close();
}
}
}
Я просто хочу отредактировать эту таблицу "media_genre", не меняя эти два объекта медиа и жанр.
Спасибо