2 回答
TA贡献1827条经验 获得超7个赞
这是另一个解决方案。(虽然仍然不完美。)
公开 Employee 类的 id:
@Configuration
protected class MyRepositoryRestConfigurer implements RepositoryRestConfigurer {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.exposeIdsFor(ThemeMessage.class);
}
}
将以下行添加到您的转换器(在 POST 请求期间,id 将为空):
@Override
public Serializable fromRequestId(String id, Class<?> aClass) {
if(id==null) {
return null;
}
String[] parts = id.split("_");
return new EmployeeIdentity(parts[0], parts[1]);
}
然后以下POST请求将起作用:
{
"id": {
"employeeId": "E-267",
"companyId": "D-432"
},
"name": "Spider Man",
"email": "spman@somedomain.com",
"phoneNumber": "+91-476253455"
}
但是,id 字段将在所有响应中公开。但也许这不是一个真正的问题,因为当您使用复合 id 时,它通常意味着 id 不仅是一个抽象标识符,而且它的部分具有应该出现在实体主体中的有意义的内容。
实际上,我也在考虑将这些行添加到我自己的代码中...... :)
TA贡献1784条经验 获得超8个赞
我有一个类似的问题,我找不到通过POST /entities端点创建新实体的解决方案。PUT /entities/{newId}但是,您也可以通过端点创建新实体。转换器适用于这些端点。我还完全拒绝了 POST 端点,避免了 500 个响应:
@PostMapping(value = "/themeMessages")
public ResponseEntity<Void> postThemeMessage() {
return new ResponseEntity<>(HttpStatus.METHOD_NOT_ALLOWED);
}
添加回答
举报