Рассмотрим следующий класс сущностей, используемый, например, с 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
заранее - это, очевидно, приведет к огромному количеству излишних запросов.