我正在使用Hibernate和Spring并且Hibernate返回此错误:
Caused by: java.sql.BatchUpdateException: Column 'ID_TAREA_FK' cannot be null
我有两个班级
public class Tarea {
private List<Sesion> sesiones;
}
public class Sesion {
private Tarea tarea;
}
与他们的吸气剂和二传手。在我的代码中,我不会忘记
t.getSesiones().add(s);
s.setTarea(t);
数据库表是: TAREAS {ID_TAREA,...},SESIONES {ID_SESION,ID_TAREA_FK,...}
Tarea.hbm.xml中代码的pieco是:
<bag name="sesiones" table="SESIONES" inverse="true" cascade="all">
<key column="ID_TAREA" not-null="true" />
<one-to-many class="com.jonasurbano.tareas.domain.sesiones.Sesion" />
</bag>
在Sesion.hbm.xml中:
<many-to-one name="tarea" class="com.jonasurbano.tareas.domain.tareas.Tarea" not-null="true">
<column name="ID_TAREA_FK" />
</many-to-one>
我做错了什么?我已经阅读了Hibernate文档和这篇文章Hibernate One To Many Problem,但它对我不起作用。
解决了这个问题后,我想知道是否有办法避免在Sesion类中引用Tarea,因为我认为这个属性是多余的。
非常感谢!
答案 0 :(得分:4)
检查数据库约束。可能ID_TAREA_FK
有not null
约束,请尝试删除此约束,因为Hibernate会首先在所有其他列中使用空值保存标识列。
删除 not-null =“true”。
<key column="ID_TAREA" />
在一个字符串中重写映射:
<many-to-one name="tarea" class="com.jonasurbano.tareas.domain.tareas.Tarea" not-null="true" column="ID_TAREA_FK"/>
如果映射有问题并且没有任何帮助,http://docs.jboss.org/hibernate/core/3.3/reference/en/html/collections.html#collections-bidirectional
,请阅读此内容