barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

четверг, 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>

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

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