有人可以帮我了解如何配置休眠以执行我想要的事情。
我有一个父实体“公寓”,其中有一个“房间”列表作为子实体。我有一个用于编辑“公寓”的表格,在该表格中,我列出所有子级“房间”只是为了提供信息。房间以单独的形式添加和编辑。
因此,因为我在公寓表格中列出了房间,所以我将lazyloading设置为false:
@OneToMany
@JoinColumn (name = "appartmentId")
@LazyCollection (LazyCollectionOption.FALSE)
private List<Room> room;
但是,如果我编辑一个公寓并将其存储,则所有公寓房间都会突然消失。在数据库中,它们不会被删除,而是被取消引用(如appartmentId = null)。
因此,如何配置休眠模式以仅保留我的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;
问题内容: 有人可以帮我了解如何配置hibernate以执行我想要的事情。 我有一个父实体“公寓”,其中有一个“房间”列表作为子实体。我有一个用于编辑“公寓”的表格,在该表格中,我列出所有子级“房间”只是为了提供信息。房间以单独的形式添加和编辑。 因此,因为我在公寓表格中列出了房间,所以我将lazyloading设置为false: 但是,如果我编辑一个公寓并将其存储,则所有公寓房间都会突然消失。在
问题内容: 我正在学习SQL,并具有一些类似于以下内容的表: (*表示主键,如果是Customer和Employee,则既是PK又是返回给Person的FK) Customer和Employee都是Person的类型,我想确保在将记录插入Person时,也必须将记录插入EITHER Customer或Employee,但不能同时插入两者。在此示例的限制范围内,人员不能同时是雇员和客户。 有人告诉我
我的短信有点小问题。在文本的某些部分,我使用了' '来确保该特定单词不会中断(或移动)到新行。举个例子,我做了这样的事情: 所以从理论上讲,这个文本('-is')不应该以一个单词的形式出现在一个新的行中,对吧?我想那是对的。但是...这个技巧给我带来了一个问题,就是在“-”和“is”之间增加了很大的空格...而且我当然不想有那个“大空位”。我将给出结果示例: 如你所见,有一个巨大的空间。所以,我的
问题内容: hibernate状态是否保留LinkedHashSet的顺序?如果是,则如何?如果这取决于数据库的类型,那么我想对PostgreSQL有所了解。 背景: 我知道LinkedHashSet的用途是什么,我之所以问这个原因是因为我正在将执行的某些函数的名称记录到与某些“ functionName”表具有多对多关系的“ logError”表中。我需要这些函数保持与执行它们时相同的顺序,因此
问题内容: 我要删除,因此要从数据库中删除行。 我 确实 要删除某个实体及其所有行。不过,我 不 希望从它删除任何行。 如何 我能做到这一点? 是,并且是我要删除的实体。 请参阅下面的代码,了解我如何在“狗窝实体”中链接2: 目前,当我删除狗entitie(S),其相关的养犬实体 中 也被删除。 编辑:将狗映射到狗窝: 问题答案: 当前,当我删除狗实体时,其相关的狗窝实体也将被删除。 原因是您已设
问题内容: 我只想在我的姓名字段中输入字母作为输入。 我已经尝试过使用matchs方法,但是不幸的是出了点问题,并且抛出了异常。 还有其他检查方法吗? 问题答案: 您可以尝试使用此正则表达式