【发布时间】:2021-11-02 00:32:30
【问题描述】:
我是 Spring Boot 的初学者,尝试用 Department & Employee 类制作一个应用程序。我在这两个类之间建立了关系,Department 可以有多个 Employee,而 Employee 只能有一个 Department。每次我以错误结束时:
com.learning.model.Employee 无法转换为 java.lang.Integer
另外,我发现了两种通过 API 将数据插入数据库的方法。首先通过服务层,第二直接通过控制器。如果您能告知以上两种方法中最真实的方法,将不胜感激。
部门.java
@Entity
@Table(name = "Department")
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
public class Department {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "dept_seq")
@SequenceGenerator(initialValue = 1, name = "dept_seq", sequenceName = "dept_sequence")
@Column(name = "id")
private Integer id;
@Column(name = "deptName")
private String deptName;
@OneToMany(mappedBy = "department", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonIgnore
private List<Employee> employees;
}
Employee.java
@Entity
@Table(name = "Employee_Dtls")
@ToString
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "emp_seq")
@SequenceGenerator(initialValue = 1, name = "emp_seq", sequenceName = "employee_sequence")
@Column(name = "id")
private Integer id;
@Column(name = "name")
private String name;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "dept_id")
private Department department;
}
DepartmentService.java
@Service
public class DepartmentService {
@Autowired
private EmployeeRepository employeeRepository;
@Autowired
private DepartmentRepository departmentRepository;
//Get Department
public List<Department> getAllDepartments() {
return departmentRepository.findAll();
}
//Add Department
public Department addDepartment(Department department) {
Employee emp = employeeRepository.findById(department.getEmployees().get(department.getId())).orElse(null);
if (null == emp) {
emp = new Employee();
}
emp.setName(department.getEmployees().get(emp.getId()));
department.setEmployees(emp);
return departmentRepository.save(department);
}
}
DepartmentController.java
public class DepartmentController {
@Autowired
private DepartmentService departmentService;
@GetMapping("/get-departments")
public ResponseEntity<List<Department>> getAllDepartments() {
List<Department> departments = departmentService.getAllDepartments();
return new ResponseEntity<>(departments, HttpStatus.OK);
}
@PostMapping("/department")
public ResponseEntity<Department> saveDepartment(@RequestBody Department department) {
Department dept = departmentService.addDepartment(department);
return new ResponseEntity<>(dept, HttpStatus.OK);
}
}
【问题讨论】:
-
getAllDepartments工作正常吗? -
请发布您的完整错误消息,包括堆栈跟踪。我想有更多关于可用错误的有价值信息。
-
@ray 我只是检查 getAllDepartment 工作正常,但我必须评论“//”来自 DepartmentController 的所有 PostMapping 和来自 DepartmentService 的 AddDepartment
-
@McPringle 这就是我得到的全部 com.learning.model.Employee 无法转换为 java.lang.Integer,并且此错误会阻止初始化应用程序
-
所以你在运行时得到错误?您肯定会看到更多发生错误的信息,例如类名或行号。
标签: java spring spring-boot