有人可以帮我了解如何配置hibernate以执行我想要的事情。
我有一个父实体“公寓”,其中有一个“房间”列表作为子实体。我有一个用于编辑“公寓”的表格,在该表格中,我列出所有子级“房间”只是为了提供信息。房间以单独的形式添加和编辑。
因此,因为我在公寓表格中列出了房间,所以我将lazyloading设置为false:
@OneToMany @JoinColumn (name = "appartmentId") @LazyCollection (LazyCollectionOption.FALSE) private List<Room> room;
但是,如果我编辑一个公寓并将其存储,则所有公寓房间都会突然消失。在数据库中,它们不会被删除,而是被取消引用(如appartmentId = null)。
因此,如何配置hibernate模式以仅保留我的Appartment对象。根本不碰孩子吗?
这是我的保存动作:
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; }
这真的很简单。无需重新填充孩子或创建单独的DTO。
如果您永远不会坚持使用子级,只需在joincolumn批注中添加insertable = false,updatable = false即可。像这样:
@OneToMany @JoinColumn (name = "appartmentId", insertable = false, updatable = false) @Fetch(value = FetchMode.JOIN) private List<Room> room;