2 回答

TA貢獻1827條經驗 獲得超8個贊
這是另一個解決方案。(雖然仍然不完美。)
公開 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": "[email protected]",
"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);
}
添加回答
舉報