部门类别:
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Department {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long departmentid;
private String departmentName;
private String departmentAddress;
private String departmentcode;
}
部门存储库类别:
@Repository
public interface DepartmentRepository extends JpaRepository<Department, Long> {
Department findByDepartmentId(long departmentid);
}
部门服务:@服务@Slf4j公共类部门服务{
@Autowired
private DepartmentRepository departmentrepository;
public Department saveDepartment(Department department) {
log.info("Inside savedepartment method of deparment service");
return departmentrepository.save(department);
}
public Department finddepaartmentbyid(long departmentid) {
log.info("inside finddepartmentbyid mehtod of departmentservice");
return departmentrepository.findByDepartmentId(departmentid);
}
}
部门主管:
@RestController
@RequestMapping("/departments")
@Slf4j
public class DepartmentController {
@Autowired
private DepartmentService departmentservice;
@PostMapping("/")
public Department saveDepartment(@RequestBody Department department)
{
log.info("Inside savedepatment method of department controller");
return departmentservice.saveDepartment(department);
}
@GetMapping("{id}")
public Department finddepartmentbyid(@PathVariable long departmentid)
{
log.info("inside finddepartmentbyid mehtod of department controller");
return departmentservice.finddepaartmentbyid(departmentid);
}
}
我收到运行时错误,因为无法为方法public abstract com.example.demo.entity.Department.com.example.demo.repository.DocumentRepository.findByDepartmentId(long(创建查询!找不到类型Department的属性departmentId!你是说"departmentid"吗?
您需要谨慎命名存储库方法。在您的存储库代码中,您会说Department findByDepartmentId(long departmentid);
。因此,Spring正试图对变量departmentId
进行搜索(请注意这里的camel大小写有多重要(。不幸的是,存储库DepartmentRepository
的实体类Department
没有任何名称为departmentId
的字段,而是有departmentid
。
这里有两个解决方案:
- 将存储库方法重命名为
Department findByDepartmentid(long departmentid);
:不建议这样做 - 将
Department
实体类中的departmentid
更改为departmentId
:推荐和最佳实践
您可以在此处找到有关命名存储库方法的更多详细信息