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

JpaRepository getOne()获取并更新整个对象

赫连实
2023-03-14
  @Transactional
public void updateStudentYear(int uniqueNumber, int newYear) {
    Student studentProxy = studentRepository.getOne(uniqueNumber);
    studentProxy.setYear(newYear);
    studentRepository.save(studentProxy);
}

2021-03-10 20:24:23.268调试118757--[main]org.hibernate.sql:更新学生集name=?,team=?,year=?其中UNIQUE_NUMBER=?

我原以为只会发出一个“更新年份”声明,但令我惊讶的是,看起来所有的事情都像一对经典的findOne()/save()操作一样完成了。我错了吗?

共有1个答案

伯丁雷
2023-03-14

不是,链接题中的答案不幸错了。getOne()/getReference()方法不是要更新单个字段,而是要避免在不需要的情况下访问数据库。

这种方法的有用之处在于

Foo foo = fooRepo.findOne(id);
Bar barProxy = barRepo.getOne(id);
foo.setBar(barProxy);
fooRepo.save(foo);

在这种情况下,将从db中提取foo,但bar不会。

 类似资料:
  • 我有非常复杂的冬眠结构,有许多@manytomy、@ManyToOne、@OneToOne等关联。这些嵌套的集合/对象也有自己的嵌套对象/集合。整个对象被延迟加载。 我试图实现的是,对于一个特定的操作,能够急切地获取整个对象。 我做了一些研究,但我所能找到的只是需要指定每个对象/集合并手动获取的解决方案。 有没有一种方法可以获取整个对象结构,而无需指定需要获取的每个对象?

  • 问题内容: 当使用平滑功能时,如何在返回一个更新的表的同时更新一个表中的几列? 假设SomeTables有一些TableQuery,例如,如果您想向表中添加一个项目(并返回新添加的项目),通常会编写这样的查询 如果您要更新商品并将整个商品退回整个商品,该怎么做,我怀疑您会做这样的事情 但是,以下代码不起作用,并且我看不到任何有关如何执行此操作的文档 请注意,我知道您可以事先查询该项目,对其进行更新

  • 我想在我的MongoDB数据库中找到一个嵌套集合,并从Pymongo更新它。下面是我的文档树的结构: 我希望访问的集合是。目前,我的代码使用函数来定位中的元素,键为“Joe Edwards”。我得到的回报是一个光标对象;这是意料之中的。但是,我找不到访问集合并更新它的方法(我正在寻找类似这样我就可以直接操作)。 我已经查看了PyMongo文档和堆栈交换上的许多帖子,但我没有发现任何类似的内容。我的

  • 问题内容: 我想获取一对一关系的ID,而不加载整个对象。我以为可以使用如下所示的延迟加载来做到这一点: 我希望f.getBar() 不 触发另一个提取。我希望hibernate给我一个代理对象,该代理对象使我可以调用.getId()而不实际获取Bar对象。 我究竟做错了什么? 问题答案: 使用 财产访问策略 代替 采用 现在工作正常! 如果调用 不是标识符getter方法的 任何方法 , 则会初始

  • 本文向大家介绍StackExchange.Redis 设置并获取一个整数,包括了StackExchange.Redis 设置并获取一个整数的使用技巧和注意事项,需要的朋友参考一下 示例 或使用StackExchange.Redis.Extensions:            

  • 我有这个HTML列表 和一个通过AJAX添加新名称的表单,多个由逗号分隔的add。响应是一个包含姓名的列表 我尝试在列表中按字母顺序插入这些名称,如下面的示例https://jsfidle.net/vqu3s/7/