【发布时间】:2016-05-15 04:51:12
【问题描述】:
我有一个班级
@Document
public class MyDocument {
@Id
private String id;
private String title;
private String description;
private String tagLine;
@CreatedDate
private Date createdDate;
@LastModifiedDate
private Date updatedDate;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getTagLine() {
return tagLine;
}
public void setTagLine(String tagLine) {
this.tagLine = tagLine;
}
}
我添加了带有 @EnableMongoAuditing 注释的应用程序
我已经创建了实现 mongorepository 的接口
public interface MyDocumentRepository extends MongoRepository<MyDocument, String> {
}
当我使用 GET,POST,PATCH 方法创建 RestController
在POST 我正在发送
{'title':'first'}
Controller 类的 POST 方法是
@RequestMapping(value = "/", method = RequestMethod.POST)
public ResponseEntity<?> saveMyDocument(@RequestBody MyDocument myDocument) {
MyDocument doc = myDocumentRepo.save(myDocument);
return new ResponseEntity<MyDocument>(doc, HttpStatus.CREATED);
}
它将数据保存在 mongo 中。
{
"_id" : ObjectId("56b3451f0364b03f3098f101"),
"_class" : "com.wiziq.service.course.model.MyDocument",
"title" : "test"
}
PATCH 请求就像
@RequestMapping(value = "/{id}", method = RequestMethod.PATCH)
public ResponseEntity<MyDocument> updateCourse(@PathVariable(value = "id") String id,
@RequestBody MyDocument myDocument) {
myDocument.setId(id);
MyDocument doc = courseService.save(myDocument);
return ResponseEntity.ok(course);
}
在使用数据{"description":"This is test"} 发出 PATCH 请求时
它更新了文档 BUT 它从文档中删除了标题字段和 createdDate ,它进行更新是可以的。但我想做一个 upsert,我可以使用 mongoTemplate,
但是我必须设置我想要设置的每个属性。
如果我收到 PATCH 请求,是否有任何通用方法,我只能更新不为空的属性.. 请求中的属性
spring-data-rest 似乎使用@RepositoryRestResource 来做到这一点。我怎样才能做到这一点。
我不想这样编码
Update update = new Update().set("title", myDocument.getTitle()).set("description", myDocument.getdescription());
【问题讨论】:
-
你的 courseService.save(myDocument) 函数在做什么?
-
运气好吗?我一直在寻找相同问题的解决方案。
标签: spring spring-boot spring-data spring-data-mongodb spring-data-rest