Рассмотрим следующий класс сущностей, используемый, например, с EclipseLink 2.0.2, где атрибут link не является первичным ключом, но уникальным, тем не менее.
@Entity
public class Profile {
@Id
private Long id;
@Column(unique = true)
private String link;
// Some more attributes and getter and setter methods
}
Когда я вставляю записи с двойным значением для атрибута link, EclipseLink не бросает EntityExistsException, а бросает a DatabaseException, с сообщением, объясняющим, что было нарушено уникальное ограничение.
Это не кажется очень полезным, так как не было бы простого независимого от базы данных способа, чтобы поймать это исключение. Каким был бы способ справиться с этим?
Несколько вещей, которые я рассмотрел, следующие:
- Проверка кода ошибки на
DatabaseException- я боюсь, что этот код ошибки является исходным кодом ошибки для базы данных; - Проверка наличия
Profileс определенным значением дляlinkзаранее - это, очевидно, приведет к огромному количеству излишних запросов.