gpt4 book ai didi

java - Hibernate - 如何只坚持 parent ,让 child 保持原样

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

谁能帮我理解如何配置 hibernate 来做我想做的事情。

我有一个父实体“公寓”,其中有一个“房间”列表作为子实体。我有一个编辑“公寓”的表格,在该表格中我列出了所有子“房间”,仅供引用。房间以单独的形式添加和编辑。

因为我以公寓形式列出房间,所以我将延迟加载设置为 false:

    @OneToMany
@JoinColumn (name = "appartmentId")
@LazyCollection (LazyCollectionOption.FALSE)
private List<Room> room;

但是如果我编辑一个公寓并存储它,所有的公寓房间都会突然消失。在数据库中,它们并没有被删除,而是被取消引用(如 appartmentId = null)。

那么我如何配置 hibernate 只保留我的 Appartment 对象。根本不碰 child ?

这是我的保存操作:

public String save() throws Exception {
boolean isNew = (appartment.getAppartmentId() == null);

appartment = appartmentManager.save(appartment);

String key = (isNew) ? "appartment.added" : "appartment.updated";
saveMessage(getText(key));

return SUCCESS;
}

最佳答案

这真的很简单。无需重新填充您的 child ,或创建单独的 DTO。

如果您永远不会保留子项,只需将 insertable=false, updatable=false 添加到您的 joincolumn 注释中。像这样:

@OneToMany
@JoinColumn (name = "appartmentId", insertable = false, updatable = false)
@Fetch(value = FetchMode.JOIN)
private List<Room> room;

关于java - Hibernate - 如何只坚持 parent ,让 child 保持原样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7071886/

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