首页 > 解决方案 > 如何使用 Spring Projections 更新 @Entity?

问题描述

我可以使用 Springprojections来修改和保留现有实体的内容吗?我的目标是仅更新特定字段。数据库中该行的任何其他字段应保持不变。这可能与预测?

或者投影总是只读的?

public void update() {
    PersonProjection p = repository.findByLastname("Doe");
    p.setLastname("test");
    repository.save(p); //how can I save only that field?
}

@Entity
public class Person {
   @Id private long id;
   private String firstname, lastname, age;
}

interface PersonProjection {
   String getLastname();
   void setLastname(String lastname);
}

interface PersonRepository extends CrudRepository<Person, Long> {
     PersonProjection findByLastname(String lastname);
}

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections

标签: javaspringspring-data-jpa

解决方案


简短的回答,不,您不能使用 Spring Data 投影进行更新。

如果您不想事先获取实体,您可以做的是编写自定义查询来更新某些字段。

您也可以使用 JPQL 或 Native Queries 进行更新。


推荐阅读