JPAに関する質問があります。
次のように設定されたエンティティがあるとしましょう(架空のもののみ)。
@Entity
@Table (name = "TESTTABLE")
public class TestTable {
@Id
@Basic (optional = false)
private String id;
@JoinColumn(name="TESTID", referencedColumnName = "ID")
@OneToOne(optional = true)
private TestTable testId;
}
基本的に、
-=-=-= --- = ----
| TestTable ....... |
-=-=-= --- = ----
| 文字列ID..........| <----------------------- |
| 文字列testId....| ----------- TestId = id |
--=-=-=-=-=-=
DBにforeign_key制約を設定しており、コード的には、通常の「整合性制約に違反しています-親キーが見つかりません」制約が返されることを期待しています。 testIdに入力された値には、TestTableに対応するid値がありません(したがって、私が持っていたエントリが(1、null)と(2、1)、(3、17)のみの場合、失敗します)。
ただし、前述の(3、17)などのエントリをデータベースに永続化しようとすると、IllegalStateExceptionエラーが発生します(CascadeType.PERSISTがなく、データベースに存在しないオブジェクトを永続化しようとしているため) )。これは予想される動作だと思いますが、これをバイパスしてデータベースに処理させる(したがって、予想される制約を返す)方法はありますか?
ありがとう。