Hibernate - игнорируется уникальное ограничение столбца - PullRequest
6 голосов
/ 05 ноября 2010

У меня есть таблица MySQL для хранения тегов (то есть, таких, которые используются здесь при переполнении стека).У него просто есть идентификатор (pk) и столбец тега для хранения самого тега.

Аннотированные методы get для моего объекта Tag показаны ниже.

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public int getId() {
    return this.id;
}

@Column(name = "tag", unique = true, nullable = false)
public String getTag() {
    return this.tag;
}

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

Я что-то упустил или это должно работать?*

Ответы [ 2 ]

3 голосов
/ 05 ноября 2010

Из JavaDoc UniqueConstraint (unique=true на @Colunm это просто ярлык):

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

Таким образом, он не обеспечивает уникальности при вставках.В любом случае вы должны создать уникальное ограничение в базе данных.

0 голосов
/ 05 ноября 2010

Вам не хватает, что это только информация.

Также следует добавить ограничение на столбец в базе данных.

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