'Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException

I am working on a spring boot application. After trying many solutions, it's not getting resolved.Please help:

Console: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'doctorController': Unsatisfied dependency expressed through field 'doctorService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'doctorService': Unsatisfied dependency expressed through field 'doctorRepo'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'doctorRepository': Invocation of init method failed; nested exception is org.springframework.data.mapping.PropertyReferenceException: No property id found for type Doctor!

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'doctorService': Unsatisfied dependency expressed through field 'doctorRepo'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'doctorRepository': Invocation of init method failed; nested exception is org.springframework.data.mapping.PropertyReferenceException: No property id found for type Doctor!

Controller:

@RestController
public class DoctorController {

    @Autowired
    private DoctorService doctorService;

    @RequestMapping("/hms/doctor")
    public List<Doctor> getAllDoctor()
    {
        return doctorService.getAllDoctor();
    }

    @RequestMapping(method=RequestMethod.POST,value="hms/doctor")
    public void addDoctor(@RequestBody Doctor doctor)
    {
        doctorService.addDoctor(doctor);

    }
}

Service class:

@Service
public class DoctorService {

    Logger logger= LoggerFactory.getLogger(DoctorService.class);

    @Autowired
    private DoctorRepository doctorRepo;

    public List<Doctor> getAllDoctor(){

        logger.error("error happened");
        logger.trace(" Error !!!");
        List<Doctor> doctor= new ArrayList<Doctor>();
        doctorRepo.findAll().forEach(doctor::add);      
        return doctor;

    }

    public Doctor getDoctorById(String doctorId) {
        return doctorRepo.findById(doctorId);       
    }

    public Doctor getDoctorByPhoneNumber(long phoneNumber)
    {
        return doctorRepo.findByPhoneNumber(phoneNumber);

    }


    public void addDoctor(Doctor doctor) {
        doctorRepo.save(doctor);                
    }

    public void updateDoctor(String doctorId,Doctor doctor) {
        doctorRepo.save(doctor);
    }
}

Repository:

public interface DoctorRepository extends CassandraRepository<Doctor, Integer>
{

    Doctor findById(String doctorId);

    Doctor findByPhoneNumber(long phoneNumber);

    void deleteById(String doctorId);

}

Model class:

@Entity
public class Doctor {

    @GeneratedValue(strategy=GenerationType.SEQUENCE)
    @PrimaryKey
    private int doctorId;
    private String doctorName;
    private long phoneNumber;
    private String specialization;
    private int totalExperience;
    private String workingDays[]= {"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};

    public Doctor() {

    }

    public Doctor(int doctorId, String doctorName, long phoneNumber, String specialization, int totalExperience,
            String[] workingDays) {`enter code here`
        super();
        this.doctorId = doctorId;
        this.doctorName = doctorName;
        this.phoneNumber = phoneNumber;
        this.specialization = specialization;
        this.totalExperience = totalExperience;
        this.workingDays = workingDays;
// getters and setters 

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>io.fullstack.assessment</groupId>
    <artifactId>hms</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>hms</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-cassandra</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

<!--    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency> -->   
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


Solution 1:[1]

The Id of Doctor is doctorId, so

 Doctor findById(...
 void deleteById(...

should be

Doctor findByDoctorId(...
void deleteByDoctorId(...

or change doctorId to simply id, with getter and setter.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1