Hibernate и Postgresql - класс генератора в файле отображения hibernate - PullRequest
1 голос
/ 23 сентября 2010

Идентификаторы в моей базе данных postgresql являются автоинкрементными (в базе данных определены последовательности). При создании файлов отображения гибернации я устанавливаю генератор классов на приращение:

<class name="model.Names" schema="public" table="names">
    <id name="id" type="int">
      <column name="id"/>
      <generator class="increment"/>
    </id>

Однако я продолжаю получать всевозможные ошибки (исключения нулевого указателя, org.hibernate.TransactionException: транзакция не была успешно запущена), поэтому я сначала хотел убедиться, что это правильный класс генератора, перед отладкой и поиском ошибок в другом месте. Я пробовал последовательность (не работает вообще, инкремент работает в некоторых случаях). Приложение написано в JSF 2.0.

Заранее спасибо за любые предложения.

С наилучшими пожеланиями, дерзость.

1 Ответ

2 голосов
/ 23 сентября 2010

Если вы хотите, чтобы использовали последовательности, вам определенно следует использовать один из sequence или seqhilo, если вам нужны генераторы алгоритма hi / lo.Проблема в том, что "вообще не работает" совсем не помогает понять, с какой проблемой вы столкнулись.

На всякий случай вот фрагмент кода для генератора sequence:

<id name="id" type="long" column="person_id">
        <generator class="sequence">
                <param name="sequence">person_id_sequence</param>
        </generator>
</id>

А для генератора seqhilo:

<id name="id" type="long" column="cat_id">
        <generator class="seqhilo">
                <param name="sequence">hi_value</param>
                <param name="max_lo">100</param>
        </generator>
</id>

Если вы хотитечтобы выяснить, почему он «вообще не работает», я предлагаю включить ведение журнала сгенерированного SQL , чтобы увидеть, что происходит.

Также обратите внимание, что PostgreSQL поддерживает генератор identity(см. HB-875 и HHH-1675 ) при использовании колонок SERIAL или BIGSERIAL.

Ссылки

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