我有一個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和,codewise設立foreign_key限制,我期待正常的「完整性約束違反 - 父鍵未找到「如果爲testId輸入的值在TestTable中沒有相應的id值,那麼返回約束(因此,如果我有的唯一條目是(1,null)和(2,1),(3,17)將導致失敗)。但是,當我嘗試將前面提到的(3,17)條目持久存儲到數據庫時,我得到一個IllegalStateException錯誤(因爲我沒有CascadeType.PERSIST,而且我試圖持久保留一個不會產生CascadeType.PERSIST的對象存在於數據庫中)。我知道這是預期的行爲,但無論如何繞過這一點,只是讓數據庫處理它(並因此返回預期的約束)?
謝謝。
你能後你怎麼想堅持(3,17)?因爲要做到這一點,您需要首先獲取ID爲17的TestTable實體,然後將其設置爲ID爲3的新實體。 – Parvez