Спящий класс поколения - PullRequest
0 голосов
/ 11 ноября 2011

Я использую приложение hibernate для хранения данных в базе данных Postgres. Я создал файл HBM из POJO.Таблица состоит из идентификатора, идентичного bigserial, который должен генерироваться автоматически.но когда я запускаю проект после вставки записи, он не увеличивает значение id, следовательно, выдает исключение:

 SEVERE: ERROR: duplicate key value violates unique constraint "usertable_pkey"
 SEVERE: Could not synchronize database state with session
 org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

Моя запись HBM выглядит следующим образом:

<id name="userid" type="long">
        <column name="userid" />
        <generator class="assigned" />
    </id>

Может кто-нибудь предложить, какой генераторкласс, который я могу использовать, чтобы решить эту проблему?

1 Ответ

1 голос
/ 11 ноября 2011

При вставке данных транзакций предпочтительно использовать [sequence][2] для генерации идентификатора объекта.

<id ....>
        <generator class="sequence">
           <param name="sequence">YOUR_SEQUENCE _NAME</param>
       </generator>
</id>

это гарантирует, что даже в многопоточных средах вы получите разные идентификаторы для разных объектов.

Прочитайте API о классах генератора здесь .

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