1
resposta

No property findByNome found for type Curso!

Ao criar o CursoRepository ele esta apresenta o seguinte erro ao tentar rodar o projeot.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cursoRepository' defined in br.com.alura.forum.repository.CursoRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract br.com.alura.forum.modelo.Curso br.com.alura.forum.repository.CursoRepository.FindByNome(java.lang.String)! No property findByNome found for type Curso!

Curso Repository:

package br.com.alura.forum.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import br.com.alura.forum.modelo.Curso;

public interface CursoRepository  extends JpaRepository<Curso, Long>{

    Curso FindByNome(String nomeCurso);
}

Topico Form

package br.com.alura.forum.controller.form;

import br.com.alura.forum.modelo.Curso;
import br.com.alura.forum.modelo.Topico;
import br.com.alura.forum.repository.CursoRepository;

public class TopicoForm {

    public String titulo;
    public String mensagem;
    public String nomeCurso;
    public String getTitulo() {
        return titulo;
    }
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }
    public String getMensagem() {
        return mensagem;
    }
    public void setMensagem(String mensagem) {
        this.mensagem = mensagem;
    }
    public String getNomeCurso() {
        return nomeCurso;
    }
    public void setNomeCurso(String nomeCurso) {
        this.nomeCurso = nomeCurso;
    }
    public Topico converter(CursoRepository cursoRepository) {
        Curso curso =  cursoRepository.FindByNome(nomeCurso);
        return new Topico(titulo, mensagem, curso);
    }


}

Curso.java

package br.com.alura.forum.modelo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Curso {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String nome;
    private String categoria;

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Curso other = (Curso) obj;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        return true;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCategoria() {
        return categoria;
    }

    public void setCategoria(String categoria) {
        this.categoria = categoria;
    }

}

Pelo que eu entedi é como se não tivesse o nome do curso no Curso.java mas ele esta lá, ou que o mesmo não tem o método findByNome, mas não me pareceu fazer sentido. Poderia me ajudar?

1 resposta

O método FindByNome está começando com letra maiúscula.