春季运行时错误,未为实体指定标识符:

时间:2019-12-02 18:41:51

标签: java spring hibernate

java和spring的新手。尝试创建一个应用程序,但未成功。我的应用程序中包含以下实体和控制器。但是在运行时我得到一个错误。我发布了一些片段,以便于阅读。

staff.java

@Data
@Entity
public class Staff {
    private int staff_id;
    private String staff_name;
    private String staff_email;
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "staff")
    private List<VisitRequest> visitRequest;


    public String getStaff_name(){
        return staff_name;
    }
    public void setStaff_name(String staff_name){
        this.staff_name = staff_name;
    }
    public String getStaff_email(){
        return staff_email;
    }
    public void setStaff_email(String staff_email){
        this.staff_email = staff_email;
    }

    public int getStaff_id(){
        return staff_id;
    }

    public void setStaff_id(int staff_id){
        this.staff_id = staff_id;
    }


}


StaffController.java

@Controller
@RestController
@RequestMapping("/staff/")
public class StaffController{
@Autowired
    protected StaffRepository staffRepository;


    @GetMapping("/Staff")
    public List<Staff> getAllStaff() {
        return staffRepository.findAll();
    }


    @GetMapping("/staff/{Staff_id}")
    public ResponseEntity<Staff> getStaffById(@PathVariable(value = "Staff_id") Long Staff_id)
    throws ResourceNotFoundException{
    Staff staff = staffRepository.findById(Staff_id)
            .orElseThrow(() -> new ResourceNotFoundException("Employee not Found"));
    return ResponseEntity.ok().body(staff);

运行时抛出的错误是

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfigura
tion.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: com.Vportal.data.model.Staff

请提供建议。

1 个答案:

答案 0 :(得分:1)

您的Staff实体缺少带有@Id批注的成员。可以将其添加到staff_id中,如下所示:

@Data
@Entity
public class Staff {
    @Id
    private int staff_id;

    ....
}