gpt4 book ai didi

java - JPA - 自动重新加载 @OneToMany 依赖项

转载 作者:行者123 更新时间:2023-12-01 09:55:16 25 4
gpt4 key购买 nike

我有这样的场景:

public abstract class AbstractEntity {
@Id @GeneratedValue(strategy = GenerationType.TABLE)
protected Long id;
}

public class User extends AbstractEntity {
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private Set<Dependent> dependents;
}

public class Dependent extends AbstractEntity {
@ManyToOne
@JoinColumn
private User user;
}

当我尝试insert()一个新的User实例,其中一些Dependent已经存在于数据库中,它们意味着什么填充了 id 字段后,我收到一个 DetachedEntitypassed to persist 异常。

可以通过从数据库手动加载所有Dependent来解决这个问题,但看起来不太对劲。

我想知道如何让 JPA 在填充 id 字段时自动加载它们。我怎样才能做到这一点?

最佳答案

如果您使用 JPA API,请使用:

EntityManager.merge(T t)

而不是

EntityManager.persist(Object object)

由于您使用的是 CascadeType.ALL,因此当您使用合并时,JPA 提供程序将尝试更新用户(如果它们存在于数据库中)或创建新用户。

文档:http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html .

关于java - JPA - 自动重新加载 @OneToMany 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37285045/

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