java - 如何使用 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
解决方案
简短的回答,不,您不能使用 Spring Data 投影进行更新。
如果您不想事先获取实体,您可以做的是编写自定义查询来更新某些字段。
您也可以使用 JPQL 或 Native Queries 进行更新。
推荐阅读
- .htaccess - 阻止站点克隆
- javascript - 将 Array1 中的随机值添加到 Array2 直到满足条件
- android - state_active="true" 不适用于可绘制项目
- r - 是否有一个 R 函数来提取所有数字,然后是特定模式?
- html - 容器的边框在图像溢出的一侧不可见
- algorithm - 当最多 k 个元素可以省略时找到最大和连续子数组?
- android - places.getLatLng() 返回 null 虽然 places.getName() 没有返回 null
- java - 我需要帮助对 MergeSort 和 Merge 的代码进行故障排除
- r - 如何在 R 中使用并行处理运行单个模型?
- qt - Qt 改变了样式表中的图像不透明度