我们正在使用 JPA 从数据库中加载一些东西。一些实体之间可能有可选的关系,例如
@Entity
public class First {
....
@OneToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH})
@JoinColumns(value = {
JoinColumn(name = "A_ID", referencedColumnName = "A_ID", insertable = false, updatable = false),
JoinColumn(name = "B_ID", referencedColumnName = "B_ID", insertable = false, updatable = false)})
private Second second;
当数据库中存在此关联时,一切正常。如果不是,我会得到一个javax.persistence.EntityNotFoundException
What I Want is 而不是异常,如果关联不存在,则将此字段设置为 NULL。
我尝试了几种不同的方法,例如在关系注释中使用 optional=true (顺便说一句,这是默认选项),将其设置为 Nullable 等。似乎没有什么能解决问题,似乎所有这些选项都被忽略了。
我发现很多链接都提到了同样的问题(以及stackoverflow中的一些问题),但在所有这些链接中,建议是使用@NotFound
来自Hibernate的注释。但是我们不希望对 Hibernate 有任何依赖(我们希望保持一切纯 JPA)。
你们中有人知道解决这个问题的其他方法吗?
非常感谢您的帮助!