Отношения один-ко-многим с Hibernate - PullRequest
0 голосов
/ 26 октября 2011

Я использую 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 для списка рассылки:

<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-Many , но она не работает для меня.

После решения этой проблемы я хотел бы знать, есть ли какой-нибудь способ избежать ссылки Tarea в классе Sesion, потому что я считаю это свойство избыточным.

Большое спасибо!

1 Ответ

4 голосов
/ 26 октября 2011
  • Проверьте ограничения базы данных.Возможно, ID_TAREA_FK имеет ограничение not null, попробуйте удалить это ограничение, поскольку Hibernate сначала сохраняет столбец идентификаторов со значениями NULL во всех других столбцах.

  • Delete 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...