- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 Spring Data Rest 应用程序中,我有一个标准存储库:
@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends PagingAndSortingRepository<Person, Long> {
List<Person> findByLastName(@Param("name") String name);
}
我还有一个自定义 Controller ,它将在 HTTP POST 上实现一些附加逻辑:
@RestController
@RequestMapping("/people")
public class PersonController {
@RequestMapping(value = "/**", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> savePerson(@RequestBody Person person, UriComponentsBuilder b, @RequestParam Map<String, ?> id) {
UriComponents uriComponents =
b.path("/people/").buildAndExpand();
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setLocation(uriComponents.toUri());
responseHeaders.set("MyResponseHeader", "MyValue");
return new ResponseEntity<String>("Hello World\n\n", responseHeaders, HttpStatus.CREATED);
}
}
由于我没有明确使用 Hibernate Entity Manager,因此在此 Controller 中保存我的“Person”实体的正确方法是什么?“person”参数只是一个 POJO,因此它没有任何持久性 CRUD 方法。
最佳答案
如果 PersonRepository 中使用的 Person 类与您在 Controller 中使用的将 RequestBody 映射到的任何类相同,那么在 Controller 方法中您只需执行 personRepository.save(person) -- 假设 personRepository 是一个 Autowired 实例PersonRepository 类。
我猜测,您正在尝试使用 Spring Data Rest https://spring.io/guides/gs/accessing-data-rest/ 。如果是这种情况,您的类路径中可能有内存数据库 com.h2database:h2 。这就是为什么在给定的示例中,一切都正常工作,甚至无需配置数据库或向 person 类添加任何 JPA 注释。因此,您仍然可以从自定义 Controller 执行 personRepository.save(person),而无需在 Person 类中使用任何 JPA 注释。
关于java - 如何在自定义 Spring Data Rest Controller 中正确处理 POST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40049805/
我是一名优秀的程序员,十分优秀!