我有两个实体类,一个是dept是One的方,emp是Many的一方,在使用@OneToMany,@ManyToOne的双向关联时我想删除一的一方的时候发生了错误;首先我删除的是One的一方是级联了Many的一方的,发生了错误java.sql.BatchUpdateException: ORA-02292: 违反完整约束条件 (NHOSS.FK_EMP_DNO) - 已找到子记录 我是跟着教程配的,如果有看过马士兵老师的关于hibernate的视频的话,会很清楚的。我是跟着他的关于@OneToMany,@ManyToOne的双向关联crud那个视频配置的,他使用的纯hibernate,我使用的是ssh,删除是用hibernateTemplate的delete方法删除的,由于我怀疑是否是是自己的配置不正确,所以我就将老师的实体类也改了和我的类是,结构他的程序依然正常使用,
马士兵老师的删除的语句
public void testDeleteGroup() {
Session s = sessionFactory.getCurrentSession();
s.beginTransaction();
Group g = (Group)s.get(Group.class, 1);
s.delete(g);
s.getTransaction().commit();
}
以下是我的删除语句dept.setDno(id);//注:这里的set在我的程序是没有的,我是通过spring注入ID进去的
hibernateTemplate.delete(dept);
马士兵老师的删除的语句
public void testDeleteGroup() {
Session s = sessionFactory.getCurrentSession();
s.beginTransaction();
Group g = (Group)s.get(Group.class, 1);
s.delete(g);
s.getTransaction().commit();
}
以下是我的删除语句dept.setDno(id);//注:这里的set在我的程序是没有的,我是通过spring注入ID进去的
hibernateTemplate.delete(dept);
解决方案 »
- 如何验证HttpServlet的destroy()方法被调用
- 新手求助 javaee中 关于迭代器的小问题 感激不尽。
- IBM portal Access Manager Policy server配置失败!!
- java中如何实现不生成文件,但是可以直接下载
- tomcat下直接输入ip(如192.168.1.15)就能打开在目录 Tomcat 5.5\webapps\bs 下的 login.jsp,如何做?请教了!!!
- javax.naming.Context.INITIAL_CONTEXT_FACTORY 是什么概念
- 请教java高手,网上没有搜到类似问题
- tomcat如果在ROOT中和webapps下有同名目录如何执行
- 机会难得!!组建学习日记开源项目开发小组(jsp+javabean+struts框架)的公开信(11月11日报名截止)
- struts2 <s:hidden>向action传值问题,想把#request的值通过s:hidden传到action
- 急!!java.lang.NullPointerException登录出错
- 求一关于导出excel
Group.java
@Entity
@Table(name="t_group")
public class Group {
private int gid;
private String gname;
private Set<User> users = new HashSet<User>(); @Id
public int getGid() {
return gid;
}
public void setGid(int gid) {
this.gid = gid;
}
public String getGname() {
return gname;
}
public void setGname(String gname) {
this.gname = gname;
}
@OneToMany(mappedBy="group",cascade={CascadeType.ALL})
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
User.java
@Entity
@Table(name="t_user")
public class User {
private int uid;
private String uname;
private Group group;
@Id
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name="gid")
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
Dept .java@Entity
public class Dept { // Fields private String dno;
private String dname;
private String loc;
private Set<Emp> emps = new HashSet<Emp>();
@Id
public String getDno() {
return this.dno;
} public void setDno(String dno) {
this.dno = dno;
} public String getDname() {
return this.dname;
} public void setDname(String dname) {
this.dname = dname;
} public String getLoc() {
return this.loc;
} public void setLoc(String loc) {
this.loc = loc;
}
@OneToMany(mappedBy="dept",cascade={CascadeType.ALL})
public Set<Emp> getEmps() {
return emps;
} public void setEmps(Set<Emp> emps) {
this.emps = emps;
}
}code]
Emp .java
[code=Java]@Entity
public class Emp { // Fields private String empno;
private Dept dept;
private String ename;
private String epwd;
private String title;
private String sex;
private Date hiredate;
private double sal;
@Id
public String getEmpno() {
return this.empno;
} public void setEmpno(String empno) {
this.empno = empno;
}
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name="dno")
public Dept getDept() {
return this.dept;
} public void setDept(Dept dept) {
this.dept = dept;
} public String getEname() {
return this.ename;
} public void setEname(String ename) {
this.ename = ename;
} public String getEpwd() {
return this.epwd;
} public void setEpwd(String epwd) {
this.epwd = epwd;
} public String getTitle() {
return this.title;
} public void setTitle(String title) {
this.title = title;
} public String getSex() {
return this.sex;
} public void setSex(String sex) {
this.sex = sex;
} public Date getHiredate() {
return this.hiredate;
} public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
} public double getSal() {
return this.sal;
} public void setSal(double sal) {
this.sal = sal;
}
}