Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 更新时休眠多对多约束ViolationException_Mysql_Hibernate - Fatal编程技术网

Mysql 更新时休眠多对多约束ViolationException

Mysql 更新时休眠多对多约束ViolationException,mysql,hibernate,Mysql,Hibernate,我在Photo和Auteur实体之间有一个多对多的关联,还有3个表——Auteur、Photo_Auteur和Photo 我的AUTUR映射类: @Entity @Table(name = "AUTEUR") public class Auteur implements Serializable { @Id @GeneratedValue @Column(name = "auteur_id") private int auteur_id; @Column(name = "nom") privat

我在Photo和Auteur实体之间有一个多对多的关联,还有3个表——Auteur、Photo_Auteur和Photo

我的AUTUR映射类:

@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>();
...
}
@实体
@表(name=“AUTEUR”)
公共类Auteur实现了可序列化{
@身份证
@生成值
@列(name=“auteur\u id”)
私家侦探;
@列(name=“nom”)
私有字符串名称;
@列(name=“prenom”)
私有字符串prenom;
@ManyToMany(fetch=FetchType.EAGER,cascade={CascadeType.ALL},
targetEntity=Photo.class)
@JoinTable(name=“PHOTO\u AUTEUR”,
joinColumns={
@JoinColumn(name=“AUTEUR\u ID”)},
反向连接列={
@JoinColumn(name=“PHOTO_ID”)}
private Set photos=new HashSet();
...
}
还有一个摄影课:

@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;
@实体
@表(name=“PHOTO”)
公开课照片延伸新闻{
@身份证
@生成值
@列(name=“photo_id”)
私有int-id;
@列(name=“format”)
私有字符串格式;
@列(name=“largeur”)
私人公寓;
@列(name=“auteur”)
傲慢的私人;
@列(name=“siColoree”)
私有布尔单色树;
@ManyToMany(mappedBy=“photos”,fetch=FetchType.EAGER,cascade=CascadeType.ALL,targetEntity=Auteur.class)
私有集photo_auteurs=new HashSet();
@高球
@列(name=“image”,长度=1000000)
私有字节[]图像;
…}


当我尝试更新或删除照片条目时,我会得到ConstraintViolationException,即使我在mySql中手动设置了级联删除和更新。

它在没有级联限制的情况下正常工作

SessionFactory sf = HibernateUtil.getSessionFactory();
Session session = sf.openSession();
session.beginTransaction();
session.delete(photo);
session.getTransaction().commit();
session.close();
照片中有这样的映射:

@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "PHOTO_AUTEUR",
        joinColumns = @JoinColumn(name = "PHOTO_ID"),
        inverseJoinColumns = @JoinColumn(name = "AUTEUR_ID"))
private Set<Auteur> photo_auteurs = new HashSet<>();
@ManyToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@JoinTable(name=“PHOTO\u AUTEUR”,
joinColumns=@JoinColumn(name=“PHOTO_ID”),
inverseJoinColumns=@JoinColumn(name=“AUTEUR\u ID”))
私有集photo_auteurs=new HashSet();
在AUTUR中:

@ManyToMany(fetch = FetchType.EAGER, targetEntity = Photo.class)
@JoinTable(name = "PHOTO_AUTEUR",
        joinColumns = {
            @JoinColumn(name = "AUTEUR_ID")},
        inverseJoinColumns = {
            @JoinColumn(name = "PHOTO_ID")})
private Set<Photo> photos = new HashSet<>();
@ManyToMany(fetch=FetchType.EAGER,targetEntity=Photo.class)
@JoinTable(name=“PHOTO\u AUTEUR”,
joinColumns={
@JoinColumn(name=“AUTEUR\u ID”)},
反向连接列={
@JoinColumn(name=“PHOTO_ID”)}
private Set photos=new HashSet();

我认为您缺少onDelete=“CASCADE”。。这有帮助吗?