Найти по полю Spring Boot - PullRequest
       0

Найти по полю Spring Boot

0 голосов
/ 02 февраля 2020

Мне нужно получить регистр по полю, отличному от ID, int и уникального файла с именем "rut_num", но я получаю сообщение об ошибке в запросе к репозиторию:

Entity:

@Entity
@Table(name="paciente")
public class Paciente {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long id;

    @Column(name="rut_num")
    private int rut_num;

    @Column(name="nombre")
    private String nombre;

    @Column(name="a_pat")
    private String a_pat;

    @Column(name="a_mat")
    private String a_mat;

    //getters and setters

Репозиторий:

@Repository("pacienteRepository")
public interface PacienteJpaRepository extends JpaRepository<Paciente, Serializable> {

    @Query("SELECT nombre FROM paciente WHERE rut_num= :rut_num")
    Future<String> findByRut(@Param("rut_num") int rut_num);
}

Сервис и Impl:

public interface PacienteService {

    public abstract Paciente findByRut(int rut_num);
}

@Service("pacienteServiceImpl")
public class PacienteServiceImpl implements PacienteService {

    @Autowired
    @Qualifier("pacienteRepository")
    private PacienteJpaRepository pacienteRepository;

    @Override
    public Paciente findByRut(int rut_num) {
        return (Paciente) pacienteRepository.findByRut(rut_num);
    }

}

Контроллер:

@Controller
public class PacienteController {

    @Autowired
    @Qualifier("pacienteServiceImpl")
    private PacienteService pacienteService;

    @RequestMapping(value = "/paciente/{rut_num}", method = RequestMethod.GET, headers = "Accept=application/json")
    public ResponseEntity<Paciente> findByRut(@PathVariable("rut_num") int rut_num){
        Paciente paciente = pacienteService.findByRut(rut_num);
        if (paciente == null) {
            return new ResponseEntity(HttpStatus.NOT_FOUND);
            // You many decide to return HttpStatus.NOT_FOUND
        }
        return new ResponseEntity<Paciente>(paciente, HttpStatus.OK);
    }
}

Ошибка в консоли:

Ошибка создания компонента с именем 'pacienteServiceImpl': неудовлетворенная зависимость, выраженная через поле 'pacienteRepository'; вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'pacienteRepository': сбой вызова метода init; вложенное исключение: java .lang.IllegalArgumentException: проверка не удалась для запроса метода publi c abstract java .util.concurrent.Future com.calendar.repository.PacienteJpaRepository.findByRut (int)!

1 Ответ

0 голосов
/ 02 февраля 2020

Я думаю, что проблема в том, что имя вашей сущности, к которой вы обращаетесь в своем запросе, это "Paciente", а не "paciente", поэтому меняется

@Query("SELECT nombre FROM paciente WHERE rut_num= :rut_num")
Future<String> findByRut(@Param("rut_num") int rut_num);

на

@Query("SELECT nombre FROM Paciente WHERE rut_num= :rut_num")
Future<String> findByRut(@Param("rut_num") int rut_num);

Должно работать

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...