2013-10-07 3 views
0

Hibernate verstion является 3.xUniqueConstrait на столе не работает в спящем

Ниже структура таблицы,

firstname | lastname | salary 
----------------------------------- 
firstname | lastname | 100 
firstname | lastname | 500 
firstname | lastname | 1000 

Ниже приведен код Java,

@Entity 
@Table(name="TABLE_NAME",schema="SchemaName", 
    uniqueConstraints={@UniqueConstraint(columnNames={"firstname","lastname"})}) 

Хотя у меня есть упомянутое уникальное ограничение на «firstname» и «lastname» кортежей, утра все еще в состоянии добавить строки с теми же значениями firstname и lastname.

Я думал, что получил бы HibernateException или иначе, и мне не разрешат добавлять то же имя и фамилию для нескольких строк. У меня нет единственного ограничения , созданного на уровне базы данных. Его там только в коде.

Почему я могу добавить повторяющиеся строки? Или мое понимание уникального ограничения неверно?

ответ

2

Вы прочитали javadoc?

Это всего лишь намек на включение уникального ограничения в созданный DDL. Во время выполнения ничего не будет. В основном вам необходимо создать ограничение на уровне базы данных.

+0

Спасибо. В моем примере выполняется операция Insert и Select (добавление в таблицу и запрос из таблицы). Это инструкции DML. Java Doc, на который вы указали, больше говорит о заявлениях DDL. Итак, я до сих пор не получаю! – user2488578

+0

Что не вы получаете? '@UniqueConstraint' используется только для генерации DDL. Другими словами, это добавит уникальное ограничение для базы данных (если вы решите использовать этот DDL). Аннотация не делает ничего для вас во время выполнения. –

+0

Когда мне нужно явно установить ограничение в БД, зачем использовать это ограничение в классе сущности, если это ничего не будет делать во время выполнения? – user2488578

Смежные вопросы