2012-03-07 2 views
0

мой стол имеет 3 колонки: ID, Город, район.Hibernate, как избежать дубликатов?

Мой веб-сервис дает во входных данных список пар (Город, Район). Мне нужно избегать дублирования (City, District) дубликатов.

Как я могу достичь этого результата? Я не могу использовать session.saveOrUpdate(), потому что из-за другого ID все записи кажутся разными.

Пожалуйста, помогите мне.

спасибо.

+0

Первое, что нужно сделать, это добавить ограничение в таблицу: 'CONSTRAINT city_district_unique UNIQUE (город, район)'. Точный синтаксис будет зависеть от используемой базы данных. –

+0

Возможно, вы могли бы использовать составной ключ, состоящий из городских и районных объектов. – xea

ответ

2

Комментарий предполагает, что вы должны сделать

CONSTRAINT city_district_unique UNIQUE (city, district) 

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

@Table(name = "yourtable", uuniqueConstraints = {@UniqueConstraint(columnNames = "subject"), ... }) 

При установке, вы должны поймать исключение из нарушения указанного выше ограничения и обработать его должным образом, как повторно запустить вставку с измененными параметрами или вообще игнорировать его. Еще лучше, проверьте свои данные до того, как они попадут в Hibernate, чтобы избежать недопустимых вставок заранее.

+0

1) возможно ли это сделать ПОСЛЕ создания таблицы? 2) Я не могу найти документацию MYSql для вашего синтаксиса – Bagbyte

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