gpt4 book ai didi

java - 如何使用 JPA 解决 javax.persistence.EntityNotFoundException(不是使用 @NotFound)

转载 作者:太空狗 更新时间:2023-10-29 22:56:55 25 4
gpt4 key购买 nike

我们正在使用 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
如果关联不存在,我想要的不是将此字段设置为 NULL 的异常。

我尝试了几种不同的方法,例如在关系注释中使用 optional=true(顺便说一句,这是默认选项),将其设置为 Nullable 等。似乎没有什么可以解决问题,似乎所有这些选项都被忽略了。

我发现很多链接都提到了这个非常相同的问题(以及 stackoverflow 中的一些问题),但在所有这些链接中,建议是使用 Hibernate 中的 @NotFound 注释。但是我们不希望对 Hibernate 有任何依赖(我们希望保持一切都是纯 JPA)。

你们有谁知道解决这个问题的其他方法吗?

非常感谢您的帮助!

最佳答案

下面是这个问题的替代解决方案。我不得不建立在一个关系有时被破坏的旧数据库之上。这就是我仅使用 JPA 解决它的方法。

@PostLoad
public void postLoad(){
try {
if(getObject() != null && getObject().getId() == 0){
setObject(null);
}
}
catch (EntityNotFoundException e){
setObject(null);
}
}

关于java - 如何使用 JPA 解决 javax.persistence.EntityNotFoundException(不是使用 @NotFound),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12261579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com