【发布时间】:2021-09-27 12:33:53
【问题描述】:
我使用的是 Spring Boot 1.5.2。我有一个具有 多个属性 和多个 OneToMany 关系的大实体,例如:
@Entity
@Table(name = "person")
class Person {
@Id
protected long id;
private String property1;
private String property2;
private String property3;
private String property4;
private String property5;
private String property6;
@OneToMany
private List<Obj1> obj1List;
@OneToMany
private List<Obj2> obj2List;
@OneToMany
private List<Obj3> obj3List;
@OneToMany
private List<Obj4> obj4List;
}
如何从数据库中读取Person 的列表,但只有id 和property2 两个属性,并更新property2=0。
然后,我可以使用 JPA CrudRepository 来保存():
public interface PersonRepository extends CrudRepository<Person, Long> {
}
for (Person person : personList) {
this.personRepository.save(person)
}
我不想使用来自CrudRepository 的findAll(),这使 Hibernate 能够在保存到数据库之前使用大 SQL 查询选择整个 Person 列表。
【问题讨论】:
-
为什么还要获取、更新和保存。只需编写一个直接进行更新的方法即可。
-
@M.Deinum 当然,它需要先获取对象列表以更新属性,然后再保存到数据库。
-
不,它没有。您只需编写一个更新查询即可完成所有这些操作,而无需检索所有内容。
标签: java spring-boot hibernate jpa