解决方案 »

  1.   


    我用hibernate试了下,可以是可以的,插入的时候没有问题,但是删除的时候发生问题了,不能正常删除了,无论先删哪一个都不行,在数据库表里也不能正常删除了,求指教
      

  2.   

    总共三个表,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;
    }


    }
      

  3.   

    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");

    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();


    }}这是我的测试类
      

  4.   


    有很大问题啊,我存入数据完全没有问题,但是删除的时候一直报错,连直接用sql语句进行删除都不行的
      

  5.   


    有很大问题啊,我存入数据完全没有问题,但是删除的时候一直报错,连直接用sql语句进行删除都不行的你设置FK了,如果没有级联删除,你要先删除主表数据,是要报错的。
      

  6.   


    有很大问题啊,我存入数据完全没有问题,但是删除的时候一直报错,连直接用sql语句进行删除都不行的你设置FK了,如果没有级联删除,你要先删除主表数据,是要报错的。
    我都级联了
      

  7.   


    有很大问题啊,我存入数据完全没有问题,但是删除的时候一直报错,连直接用sql语句进行删除都不行的你设置FK了,如果没有级联删除,你要先删除主表数据,是要报错的。
    我都级联了你把报错的信息贴上来,大家再集思广义。