Рассмотрим следующий класс сущностей, используемый, например, с EclipseLink 2.0.2, где атрибут link
не является первичным ключом, но уникальным, тем не менее.Нарушение ограничений ограничения в JPA 2.0
@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
- это, очевидно, приведет к огромному количеству излишних запросов.
Я представил ошибку для этой проблемы. Пожалуйста, проголосуйте за него, чтобы мы могли устранить эту проблему: https://bugs.eclipse.org/bugs/show_bug.cgi?id=375745 – sdoca