Добавление ограничения к столбцу сущностей JPA или Hibernate с использованием аннотаций - PullRequest
4 голосов
/ 27 августа 2010

Я хочу иметь столбец для объекта, который принимает только одно из перечисленного набора значений. Например, допустим, у меня есть класс POJO / сущности "Pet" со столбцом String "petType". Я хочу, чтобы petType допускал только одно из трех значений: "кошка", "собака" или "горилла". Как бы я мог аннотировать метод getPetType (), чтобы создать ограничение уровня базы данных, которое обеспечивает это?

Я разрешаю Hibernate создавать или обновлять мою таблицу базы данных при запуске приложения через свойство Hibernate "hbm2ddlauto", для которого установлено значение "update".

Я пытался использовать параметризованный тип пользователя в связи с аннотацией @Type, но, похоже, это не создает каких-либо ограничений для самого столбца базы данных. Похоже, нет способа указать такого рода ограничения в аннотации @Column, кроме использования некоторого SQL с элементом columnDefinition, и я не решаюсь пойти по этому пути, поскольку кажется, что все, что я использую там, не будет кроссплатформенность / независимость от базы данных (важно для меня, так как я запускаю свой код в производственной среде на Oracle, но я тестирую локально, используя HSQLDB и Derby). Может быть, то, что я хочу сделать, просто невозможно сделать с помощью аннотаций.

Заранее благодарим за любые идеи, которые вы можете дать мне по этой теме.

1 Ответ

3 голосов
/ 27 августа 2010

Создайте перечисление типа PetType и определите его как

@ Enumerated (EnumType.STRING)

Таким образом, строки хранятся в базе данных и в вашемТип перечисления java принимает только 3 значения, которые вы указали.

...