gpt4 book ai didi

java - 将重新加载的对象链接到其在 Hibernate 中的父对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:49 24 4
gpt4 key购买 nike

我在 Hibernate/J2EE 中遇到延迟初始化问题。我有一个 Object Cat,它包含一个 Object Collar,其中包含一个 String Address。衣领和地址处于延迟加载状态。

我正在处理我的 Object Cat,它已经从我的数据库中加载(因此我的 session 已关闭)。我的猫确实包含我的项圈,但我可以访问我的地址(延迟加载异常(exception))。

所以我的想法是重新加载 Collar 以获取地址。它的作品,我做这样的事情:

Cat cat = animals.loadCat(id);
//Here, cat contains collar, but collar doesn't contains address
Collar collar = animals.reload(collar);
//Here my collar does contain my address
collar.setAddress("new address");

如果我做一个

animals.update(cat); //(a method who call merge)

它不更新地址,这似乎合乎逻辑。

如果我做一个

update(collar);
//Method update
public void update(Collar collar){
em.merge(collar);
}

它工作正常,我的 Collar 和 Cat 在 base 中更新了。

public class Cat {
@ManyToOne
private Collar collar;
...
}
public class Collar {
@OneToMany(cascade = {CascadeType.ALL})
protected String address;
...
}
public Collar reload(Collar collar){
return em.find(Collar.class, collar.getId());
}

我的问题是,如何在 animals.update(cat) 之后将我的新项圈链接到我的猫?

最佳答案

做类似的事情:

    Cat cat = animals.loadCat(id);
cat.getCollar().setAddress("new address");
animals.update(cat);

关于java - 将重新加载的对象链接到其在 Hibernate 中的父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20142302/

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