たとえば、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
事前に特定の値を持つa の存在を確認するlink
- これは明らかに膨大な量の余分なクエリをもたらします。