0

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がなく、データベースに存在しないオブジェクトを永続化しようとしているため) )。これは予想される動作だと思いますが、これをバイパスしてデータベースに処理させる(したがって、予想される制約を返す)方法はありますか?

ありがとう。

4

1 に答える 1

0

リレーションシップでカスケード PERSIST を使用するだけです。

EclipseLinkでは、永続ユニット・プロパティも使用できます。

"eclipselink.persistence-context.commit-without-persist-rules"="true"
于 2012-12-04T15:16:36.740 に答える