JPAを使用して、データベースからいくつかのものをロードしています。一部のエンティティは、それらの間にオプションの関係を持つ場合があります。
@Entity
public class First {
....
@OneToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH})
@JoinColumns(value = {
JoinColumn(name = "A_ID", referencedColumnName = "A_ID", insertable = false, updatable = false),
JoinColumn(name = "B_ID", referencedColumnName = "B_ID", insertable = false, updatable = false)})
private Second second;
この関連付けがデータベースに存在する場合、すべてが正常に機能しています。そうでないjavax.persistence.EntityNotFoundException
場合、関連付けが存在しない場合に、このフィールドを NULL にするという例外が必要です。
いくつかの異なることを試しました。たとえば、関係注釈で optional=true を使用したり (これはデフォルトのオプションです)、Nullable として配置したりしました。何もうまくいかないようです。これらのオプションはすべて無視されているようです。
これとまったく同じ問題(およびスタックオーバーフローのいくつかの質問)に言及しているリンクがたくさん見つかりましたが、それらのすべてで、@NotFound
Hibernate の注釈を使用することをお勧めします。しかし、Hibernate に依存する必要はありません (すべてを純粋な JPA に保ちたいと考えています)。
これを解決する他の方法を知っている人はいますか?
ご協力ありがとうございました。