双向一对多添加时候未找到父项关键字
下面是剪辑过的异常信息。
12:27:20,964 WARN JDBCExceptionReporter:100 - SQL Error: 2291, SQLState: 23000
12:27:20,964 ERROR JDBCExceptionReporter:101 - ORA-02291: 违反完整约束条件 (CUPLRP.FKB76D97015CC32C4F) - 未找到父项关键字
12:27:20,964 WARN JDBCExceptionReporter:100 - SQL Error: 2291, SQLState: 23000
12:27:20,964 ERROR JDBCExceptionReporter:101 - ORA-02291: 违反完整约束条件 (CUPLRP.FKB76D97015CC32C4F) - 未找到父项关键字
12:27:20,964 ERROR AbstractFlushingEventListener:324 - Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
Caused by: java.sql.BatchUpdateException: ORA-02291: 违反完整约束条件 (CUPLRP.FKB76D97015CC32C4F) - 未找到父项关键字
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.xyurp.gygl.bean">
<class name="DutyItem" table="t_apartment_dutyitem">
<id name="id">
<generator class="native" />
</id>
<property name="sTime" type="string" length="30"/>
<property name="eTime" type="string" length="30"/>
<property name="watchman" type="string" length="30"/>
<property name="repContent" type="string" length="30"/>
<property name="advice" type="string" length="30"/>
<property name="flag" type="java.lang.String" length="1"/>
<many-to-one name="dutyRecord" column="dutyRecordId" ></many-to-one>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.xyurp.gygl.bean">
<class name="DutyRecord" table="t_apartment_dutyrecord">
<id name="id">
<generator class="native" />
</id>
<property name="dutyDate" type="string" length="30"/>
<property name="flag" type="java.lang.String" length="1"/>
<set name="dutyItems" lazy="true" inverse="false" cascade="all">
<key column="dutyRecordId" update="true"></key>
<one-to-many class="DutyItem"/>
</set>
</class>
</hibernate-mapping>
添加时候就报错!
添加方法
public void add(DutyRecord o) throws ProjectException {
if(o != null)
this.commonDao.add((DutyRecord)o);
else
throw new ProjectException("您要添加的值班记录信息不存在");
}
实体类:
package cn.xyurp.gygl.bean;
import java.util.HashSet;
import java.util.Set;
/**
* 值班记录
*
* @author wangtao
*
*/
public class DutyRecord {
private int id;
private String dutyDate; // 日期
private Set<DutyItem> dutyItems = new HashSet<DutyItem>();
private String flag;
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDutyDate() {
return dutyDate;
}
public void setDutyDate(String dutyDate) {
this.dutyDate = dutyDate;
}
public Set<DutyItem> getDutyItems() {
return dutyItems;
}
public void setDutyItems(Set<DutyItem> dutyItems) {
this.dutyItems = dutyItems;
}
}
package cn.xyurp.gygl.bean;
public class DutyItem {
private int id;
private String sTime;// 开始时间
private String eTime;//结束时间
private String watchman;//值班员
private String repContent;//值班记录(内容)
private String advice;//处理意见
private DutyRecord dutyRecord;
private String flag;
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getsTime() {
return sTime;
}
public void setsTime(String sTime) {
this.sTime = sTime;
}
public String geteTime() {
return eTime;
}
public void seteTime(String eTime) {
this.eTime = eTime;
}
public String getWatchman() {
return watchman;
}
public void setWatchman(String watchman) {
this.watchman = watchman;
}
public String getRepContent() {
return repContent;
}
public void setRepContent(String repContent) {
this.repContent = repContent;
}
public String getAdvice() {
return advice;
}
public void setAdvice(String advice) {
this.advice = advice;
}
public DutyRecord getDutyRecord() {
return dutyRecord;
}
public void setDutyRecord(DutyRecord dutyRecord) {
this.dutyRecord = dutyRecord;
}
}
[解决办法]
add是save还是saveOrUpdate实现的?