总共三个表,husband,wife,husbandhus,其中husband跟wife和husbandhus都是有外键关联的package com.bjsxt.hibernate;import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; import javax.persistence.Table;@Entity @Table(name="husband") public class Husband { private int id; private String name;
@Id @GeneratedValue public int getId() { return id; }
public String getName() { return name; }
public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; }
}package com.bjsxt.hibernate;import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.OneToOne; import javax.persistence.Table;@Entity @Table(name="wife") public class Wife { private int id; private String name; private Husband husband;
@Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @OneToOne(cascade=CascadeType.ALL) public Husband getHusband() { return husband; } public void setHusband(Husband husband) { this.husband = husband; }
}package com.bjsxt.hibernate;import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; import javax.persistence.Table;@Entity @Table(name="husbandhus") public class Husbandhus { private int id; private String name; private Husband husband; @Id @GeneratedValue public int getId() { return id; }
public String getName() { return name; }
public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } @OneToOne(cascade=CascadeType.ALL) public Husband getHusband() { return husband; } public void setHusband(Husband husband) { this.husband = husband; }
}
package com.bjsxt.hibernate;import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration;public class Test {
public static void main(String[] args) { Husband h = new Husband(); //t.setId(4); h.setName("hh1");
我用hibernate试了下,可以是可以的,插入的时候没有问题,但是删除的时候发生问题了,不能正常删除了,无论先删哪一个都不行,在数据库表里也不能正常删除了,求指教
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;@Entity
@Table(name="husband")
public class Husband {
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}package com.bjsxt.hibernate;import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;@Entity
@Table(name="wife")
public class Wife {
private int id;
private String name;
private Husband husband;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToOne(cascade=CascadeType.ALL)
public Husband getHusband() {
return husband;
}
public void setHusband(Husband husband) {
this.husband = husband;
}
}package com.bjsxt.hibernate;import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;@Entity
@Table(name="husbandhus")
public class Husbandhus {
private int id;
private String name;
private Husband husband;
@Id
@GeneratedValue
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
@OneToOne(cascade=CascadeType.ALL)
public Husband getHusband() {
return husband;
} public void setHusband(Husband husband) {
this.husband = husband;
}
}
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;public class Test {
public static void main(String[] args) {
Husband h = new Husband();
//t.setId(4);
h.setName("hh1");
Wife wife=new Wife();
wife.setName("ww1");
wife.setHusband(h);
Husbandhus hh=new Husbandhus();
hh.setName("hhh1");
hh.setHusband(h);
SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
//session.save(wife);
//session.save(hh);
Husband del=(Husband)session.get(Husband.class,2);
session.delete(del);
session.getTransaction().commit();
}}这是我的测试类
有很大问题啊,我存入数据完全没有问题,但是删除的时候一直报错,连直接用sql语句进行删除都不行的
有很大问题啊,我存入数据完全没有问题,但是删除的时候一直报错,连直接用sql语句进行删除都不行的你设置FK了,如果没有级联删除,你要先删除主表数据,是要报错的。
有很大问题啊,我存入数据完全没有问题,但是删除的时候一直报错,连直接用sql语句进行删除都不行的你设置FK了,如果没有级联删除,你要先删除主表数据,是要报错的。
我都级联了
有很大问题啊,我存入数据完全没有问题,但是删除的时候一直报错,连直接用sql语句进行删除都不行的你设置FK了,如果没有级联删除,你要先删除主表数据,是要报错的。
我都级联了你把报错的信息贴上来,大家再集思广义。