I was trying to use Spring Data JPA
on Spring Boot
and I kept getting error, I can't figure out what the problem is:
Unable to locate Attribute with the the given name [firstName] on this ManagedType [com.example.h2demo.domain.Subscriber]
FirstName is declared in my entity class. I have used a service class with DAO before with different project and worked perfectly.
My Entity class (getters and setters are also in the class) :
@Entity public class Subscriber { @Id @GeneratedValue private long id; private String FirstName,LastName,Email; public Subscriber(long id, String firstName, String lastName, String email) { this.id = id; this.FirstName = firstName; this.LastName = lastName; this.Email = email; } } ...
My Repository Class
@Component public interface SubscriberRepository extends JpaRepository<Subscriber,Long> { Subscriber findByFirstName(String FirstName); Subscriber deleteAllByFirstName(String FirstName); }
My Service Class
@Service public class SubscriberService { @Autowired private SubscriberRepository subscriberRepository; public Subscriber findByFirstName(String name){ return subscriberRepository.findByFirstName(name); } public Subscriber deleteAllByFirstName(String name){ return subscriberRepository.deleteAllByFirstName(name); } public void addSubscriber(Subscriber student) { subscriberRepository.save(student); } }
And My Controller class:
@RestController @RequestMapping("/subscribers") public class SubscriberController { @Autowired private SubscriberService subscriberService; @GetMapping(value = "/{name}") public Subscriber findByFirstName(@PathVariable("name") String fname){ return subscriberService.findByFirstName(fname); } @PostMapping( value = "/add") public String insertStudent(@RequestBody final Subscriber subscriber){ subscriberService.addSubscriber(subscriber); return "Done"; } }
Try changing private String FirstName,LastName,Email;
to private String firstName,lastName,email;
It should work.
findByFirstName
in SubscriberRepository
tries to find a field firstName
by convention which is not there.
Further reference on how properties inside the entities are traversed https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-property-expressions
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With