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 |
--=--=--=--=--=-=

我在数据库中设置了 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 回答