我有一个 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 |
--=--=--=--=--=-=
我在数据库中设置了 foreign_key 约束,并且在代码方面,我期望返回正常的“完整性约束违反 - 未找到父键”约束,如果为 testId 输入的值在 TestTable 中没有对应的 id 值(因此,如果我仅有的条目是 (1, null) 和 (2, 1), (3, 17) 将导致失败)。
但是,当我尝试将诸如上述 (3, 17) 的条目持久保存到数据库时,我收到 IllegalStateException 错误(因为我没有 CascadeType.PERSIST 并且我试图持久保存数据库中不存在的对象)。我知道这是预期的行为,但是有没有绕过这个,让数据库处理它(从而返回预期的约束)?
谢谢。