I have a many-to-many association between Photo and Auteur entities, and 3 tables - AUTEUR, PHOTO_AUTEUR and PHOTO.
My Auteur mapping class:
@Entity
@Table(name = "AUTEUR")
public class Auteur implements Serializable {
@Id
@GeneratedValue
@Column(name = "auteur_id")
private int auteur_id;
@Column(name = "nom")
private String nom;
@Column(name = "prenom")
private String prenom;
@ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL},
targetEntity = Photo.class)
@JoinTable(name = "PHOTO_AUTEUR",
joinColumns = {
@JoinColumn(name = "AUTEUR_ID")},
inverseJoinColumns = {
@JoinColumn(name = "PHOTO_ID")})
private Set<Photo> photos = new HashSet<Photo>();
...
}
and a Photo class:
@Entity
@Table(name = "PHOTO")
public class Photo extends News {
@Id
@GeneratedValue
@Column(name = "photo_id")
private int id;
@Column(name = "format")
private String format;
@Column(name = "largeur")
private int largeur;
@Column(name = "hauteur")
private int hauteur;
@Column(name = "siColoree")
private boolean siColoree;
@ManyToMany(mappedBy = "photos", fetch = FetchType.EAGER, cascade = CascadeType.ALL, targetEntity = Auteur.class)
private Set<Auteur> photo_auteurs = new HashSet<>();
@Lob
@Column(name = "image", length = 1000000)
private byte[] image;
...}
and when I try to update or delete Photo entry i get ConstraintViolationException, even if I manually have set cascade deleting and updating in mySql.