当前位置: 首页 > 知识库问答 >
问题:

@多个和更新实体

孟成化
2023-03-14

我有一个User类,它有一些附加属性:

@Entity
@Table(name="\"user\"")
public class User implements UserDetails {
    private String username;
    private String password;
    @ManyToMany(fetch = FetchType.EAGER)
    private Collection<House> houses;
}

现在,如果我调用一些方法来改变其中一个房子(例如改变它的名称属性),如果我调用,我仍然会得到房子的旧值:

User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
user.getHouses(); <- value of name property in house is not updated

我如何确保它总是更新?

共有2个答案

李和昶
2023-03-14

根据您提供的信息,您缺少一些详细信息:

级联缺失,存在所有类型的级联类型,为了简单起见,让我们假设您希望对用户实体所做的每一次更改都会对相关实体(即House)产生影响,因此您必须添加Cascade。全部

你的@JoinTable@jointcoumn呢?它也不会在实体关系中定义。

阎烨
2023-03-14

我建议您更改@ManyTo很多(finch=FetchType。EAGER)to@ManyTo很多(读取=FetchType.懒惰)。因为EAGER在第一次调用时立即获取对象,并且使用LAZY,你有id,你将按需获取,这意味着,使用懒惰,你将从数据库中获取对象的最后状态。

 类似资料:
  • 使用< code>node-postgres我想更新我的用户模型中的列,目前我有这个 所以我可以做到这一点 但是,如果我想更新多个列和值,我目前正在做一些非常低效的事情,并调用该方法x次(即对于每个查询) 我如何通过只调用一次数据库来生成这个。 谢谢

  • 您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,了解正确的语法....

  • 我有两个实体类它只有一个字段叫做和第二个实体它有两个字段和。数据库结构 我正在创建一个简单的CRUD web-app,但是update方法不是更新实体,而是在DB中插入新值。我检查了一下,当用户点击指定菜单上的更新时,第一个实体的id和它的配料id也会被预先定义。我是spring boot和thymeleaf的新手,不知道当您有一个以上的实体时如何使用JPA。 菜单实体: 配料实体: 控制器(仅更

  • 问题内容: 我需要执行选择,然后以原子方式更新其中的一些行。 我正在使用的代码如下所示(简化): 我可以保证更新将自动执行吗?如果没有,我如何保证? 如果任何其他进程更改了您通过其更新的数据库行,该怎么办?有什么方法可以锁定行? 问题答案: 这里可能有很多技术和概念在起作用,当您开始考虑多线程/多请求应用程序时,事情就会变得相当棘手。 正如Iassevk所说,您应该研究使用事务来确保更新的原子性-

  • 问题内容: 我知道您可以一次插入多行,是否可以在MySQL中一次更新多行(如在一个查询中)? 编辑:例如,我有以下内容 我想将以下所有更新合并到一个查询中 问题答案: 是的,这是可能的-您可以在插入的键更新中使用INSERT…。 使用您的示例:

  • 我有一个表,其中有一个主id列(自动索引)、两个子id列(也已索引)和12列类型geometry(Polygon)。如果我要更新此表上的约200万行,运行约200万条单独的更新语句是否更快 还是像下面的答案那样,执行较少数量的较大更新语句更快 如果是后者,你对什么是好的有什么建议吗?是 = ~2mil,还是一些较小的子集(我会重复直到它们全部完成)? 编辑:显然,在前一种情况下,我会使用准备好的语