Класс генератора Hibernate не работает? - PullRequest
4 голосов
/ 12 мая 2011

Задавая этот вопрос здесь после нескольких часов разочарования со мной и моим Затмением. Надеюсь найти здесь передышку.

Я пытаюсь сохранить объект pojo в базу данных MySQL через Hibernate 3.0. По сути, мое требование таково: перед сохранением мне нужно назначить идентификатор объекта и не дать Hibernate сделать это для меня.

Для этого я посмотрел в документации и увидел, что <generator class="assigned"/> идеально подходит для моего счета. Следовательно, я обновил .hbm.xml файл со следующим для id:

<id name="id" type="int">
    <column name="ID" />
    <generator class="assigned" />
</id>

Мой pojo сопоставляет файл .hbm.xml с T.

Я устанавливаю все параметры, включая ID моего pojo и вызываю метод saveOrUpdate(object) Hibernate.

Если это поможет, в столбце ID моей таблицы базы данных отключено "auto-inc".

Невероятно, когда я смотрю на содержимое таблицы базы данных, была вставлена ​​строка с собственным идентификатором Hibernate, а не с тем, что я установил.

Как это возможно? Есть ли что-то еще влияющее на ID? Я что-то пропустил? Что обходится?

Мой hibernate.properties выглядит следующим образом (если это поможет):

hibernate.connection.driver_class =com.mysql.jdbc.Driver
hibernate.dialect =org.hibernate.dialect.MySQLDialect
hibernate.connection.url =jdbc:mysql://localhost/dbdbdbdbdb
hibernate.connection.username=root
hibernate.connection.password=password
hibernate.connection.pool_size=10
jdbc.batch_size=30
hibernate.show_sql=true
hibernate.current_session_context_class=true
hibernate.hbm2ddl.auto=validate
hibernate.cglib.use_reflection_optimizer=false
hibernate.generate_statistics=true
hibernate.cache.use_query_cache=true
hibernate.cache.region.factory_class=net.sf.ehcache.hibernate.EhCacheRegionFactory

Ответы [ 2 ]

1 голос
/ 12 мая 2011

Ну, ложная тревога! Это была действительно проблема с интеграцией Eclipse - Tomcat. Мне пришлось очистить каталоги Tomcat и переиздать, чтобы файлы hbm вступили в силу.

Подсказка: Если вы запускаете ant в Eclipse, время от времени не забывайте обновлять рабочее пространство Eclipse. Изучение некоторых вещей трудным путем.

0 голосов
/ 12 мая 2011

Вы можете написать свой собственный класс генератора последовательности, чтобы он возвращал идентификаторы, соответствующие вашему требованию.Для получения более подробной информации следуйте: http://danu -javastuff.blogspot.com / 2009/01 / custom-id-generator-class-for-hibernate.html

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