这是我的文档,
Employee
是 mongoDB 数据库中的一个集合
@Document(collection = "Employee")
public class Employee {
@Id
private String id;
private String eId;
private String firstName;
private String lastName;
private String emailId;
private int grpId;
}
这是控制器类
@RestController
@CrossOrigin(origins = "*")
public class EmployeeController {
@Autowired
private EmployeeService service;
@GetMapping("/employee")
public ResponseEntity<?> getAllEmployee(){
List<Employee> employees;
employees = service.getAllEmployees();
return new ResponseEntity<List<Employee>>(employees, HttpStatus.OK);
}
@PostMapping("/employee")
public void newEmployee(@RequestBody Employee employee){
service.newEmployee(employee);
}
}
这是服务等级
@Service
public class EmployeeService {
@Autowired
private EmployeeRepository employeeRepo;
public List<Employee> getAllEmployees(){
return employeeRepo.findAll();
}
public void newEmployee(Employee employee){
employeeRepo.save(employee);
}
}
这是存储库界面
@Repository
public interface EmployeeRepository extends MongoRepository<Employee,String> {
}
这是我对
http://localhost:8080/employee
的发帖请求
8080
是应用程序运行的端口
{
"eId": "01abc",
"firstName": "your_firstName",
"lastName": "your_lastName",
"emailId": "[email protected]",
"grpId": 1
}
当我使用 get 请求获取我得到的所有员工时,一旦发布请求得到满足:
{
"id": "63f6f0ffb84be0661b8d35a0",
"firstName": "your_firstName",
"lastName": "your_lastName",
"emailId": "[email protected]",
"grpId": 1,
"eid": null
}
如果我将
eId
传递为null
,我无法弄清楚为什么eId
是"01abc"
我尝试为此搜索堆栈溢出但找不到解决方案
好的,根据您的 HTTP/POST 请求,我可以看到您并没有专门将“Id”字段作为 JSON 的一部分传递。因此,除非您以某种方式自动生成它,否则我可以提供一些提示来尝试看看有什么用:
@PostMapping("/employee")
public void newEmployee(@RequestBody Employee employee){
employee.setId(UUID.randomUUID().toString());
service.newEmployee(employee);
}
public class Employee implements Serializable
@PostMapping("/employee")
public void newEmployee(@RequestBody Employee employee){
Employee employeeToSave = new Employee(
UUID.randomUUID.toString(), // for the ID field,
employee.getEId(),
.... // fill your class up with details from the JSON
);
// for sanity and confirmation, you can toString() this new object to ensure it's what you want to save
log.info("Employee to save: {}", employeeToSave.toString());
service.newEmployee(employeeToSave);
}
我希望这些建议之一能有所帮助:)
使用 @Generated 将您的 id 变量类型更改为 Long 或 UUID,然后 将您的发帖请求更改为
{
"id" : null,
"eId": "01abc",
"firstName": "your_firstName",
"lastName": "your_lastName",
"emailId": "[email protected]",
"grpId": 1
}
我有一个类似的问题,解决了也改变了字段的名称,你明白问题的原因了吗?在我看来是有字段名限制或与“Id”冲突