Как запретить Hibernate использовать 0 в качестве идентификатора? - PullRequest
5 голосов
/ 17 ноября 2011

Я использую

@TableGenerator(name="tab",initialValue=2,allocationSize=50)

для сущностей и определяю идентификатор с помощью

@Id
@GeneratedValue(generator="tab",strategy=GenerationType.TABLE)
private int id;

, но Hibernate по-прежнему использует 0 в качестве идентификатора.

Я не могу использовать @GenericGenerator, потому что аннотации не поставляются с Hibernate4, который поставляется с Jboss AS7.

Есть ли простое решение или мне нужно написать собственный генератор?

1 Ответ

3 голосов
/ 17 ноября 2011

Hibernate создает идентификаторы с идентификатором 0, потому что у вас есть примитивный тип. Попробуйте использовать Integer id вместо int id. Помните, что примитивы не могут содержать нулевое значение.

Если вы хотите сгенерировать генератор пользовательских идентификаторов, вы можете использовать SEQUENCE в БД для генерации идентификатора объекта.

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

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

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