繁体   English   中英

与Hibernate一对多关系

[英]One-to-many relationship with Hibernate

我在Spring中使用Hibernate,并且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;
}

与他们的getter和setter。 在我的代码中,我不会忘记

t.getSesiones().add(s);
s.setTarea(t);

数据库表为:TAREAS {ID_TAREA,...},SESIONES {ID_SESION,ID_TAREA_FK,...}

Tarea.hbm.xml中用于列表部分的代码的饼图是:

<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一对多问题,但是它对我不起作用。

解决此问题后,我想知道是否有某种方法可以避免在Sesion类中引用Tarea,因为我认为此属性是多余的。

非常感谢!

  • 检查您的数据库约束。 可能ID_TAREA_FK not null约束,请尝试删除此约束,因为Hibernate首先使用所有其他列的null值保存标识列。

  • 删除 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/zh-CN/html/collections.html#collections-bidirectional

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM