четверг, 5 июля 2012 г.

Hibernate: использование нулевых идентификаторов

По-умолчанию Hibernate не позволяет использовать значения "0" в качестве числовых идентификаторов persistent-объектов, т.к. он трактует объект с идентификаторомв "0" как transistent. Таким образом, при попытке сохранить объект, ссылающийся на persistent-объект с нулевым идентификатором, валится неожиданное исключение:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing ...
Чтобы исправить данную ситуацию, нужно в маппинге класса задать ненулевое "unsaved-value" для идентификатора, например, "-1":
<id name="id" type="long" unsaved-value="-1">
  <column name="id"/>
  <generator class="increment"/>
</id>

Комментариев нет:

Отправить комментарий