[英]ManyToOne Lazy loading not working Spring boot
我已经使用 Spring boot 制作了其余的 api。 它有两个实体员工和部门。 员工有部门对象,所以关系是多对一。 它是单向的。 部门没有员工名单。 当我点击员工 GET 方法端点时,我收到 com.fasterxml.jackson.databind.exc.InvalidDefinitionException 异常。 请告诉我如何解决它。
员工等级:
@Entity
@Table(name = "employees")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String firstName;
private String lastName;
private Integer salary;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="department_id",referencedColumnName = "id",nullable = false)
private Department department;
部门类:
@Entity
@Table(name = "departments")
public class Department {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
员工服务:
@Service
public class EmployeeService {
private final EmployeeRepository employeeRepository;
@Autowired
public EmployeeService(EmployeeRepository employeeRepository) {
this.employeeRepository = employeeRepository;
}
public List<Employee> getAllEmployees(){
return employeeRepository.findAll();
}
public Employee getEmployeeById(Integer id){
Optional<Employee> optionalEmployee = employeeRepository.findById(id);
if(optionalEmployee.isEmpty()){
throw new IllegalStateException("Department does not exists");
}
return optionalEmployee.get();
}
public Employee createEmployee(Employee employee){
return employeeRepository.save(employee);
}
员工控制器:
@RestController
@RequestMapping(path = "/employees")
public class EmployeeController {
private final EmployeeService employeeService;
@Autowired
public EmployeeController(EmployeeService employeeService) {
this.employeeService = employeeService;
}
@GetMapping
public List<Employee> getAllDepartments(){
return employeeService.getAllEmployees();
}
@PostMapping
public Employee createEmployee(@RequestBody Employee employee){
return employeeService.createEmployee(employee);
}}
您必须将@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)<\/code>注释放在
ManyToOne<\/code>关系映射中
"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.