Рассмотрим следующий класс сущностей, используемый, например, с 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
, но выдает DatabaseException
, с сообщением, объясняющим, что уникальное ограничение было нарушено.
Это не кажется очень полезным, поскольку не было бы простого, независимого от базы данных, способа поймать это исключение.Каков был бы рекомендуемый способ справиться с этим?
Я рассмотрел несколько вещей:
- Проверка кода ошибки на
DatabaseException
- Боюсь, что эта ошибкакод, тем не менее, является собственным кодом ошибки для базы данных; - Проверка существования
Profile
с определенным значением для link
заранее - это, очевидно, приведет к огромному количеству лишних запросов.