URGENTE | FindAll - JPA HIBERNATE

4 respostas
O

Preciso exibir uma lista de todos os veterinários que existem no meu banco, mas a minha lista só retorna vazia.

<%@page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“ISO-8859-1”%>
<%@taglib prefix=“form” uri=“http://www.springframework.org/tags/form”%>
<%@taglib prefix=“spring” uri=“http://www.springframework.org/tags”%>

Cadastro - Veterinário
<jsp:include page="../comum/header.jsp"></jsp:include>

<div class="container">
	<h1>Cadastro de Veterinário</h1>


	<form:form modelAttribute="veterinario" action="${cadastra}">

		<div class="form-group">
			<label for="crv">Número CRV</label>
			<input type="text" name="crv" id="crv" value="${veterinario.crv}" class="form-control">
		</div>

		<div class="form-group">
			<label for="nomeVeterinario">Nome Veterinário</label>
			<input type="text" name="nomeVeterinario" id="nomeVeterinario" value="${veterinario.nomeVeterinario}" class="form-control">
		</div>

		<div class="form-group">
			<label for="telefoneVeterinario">Telefone Veterinário</label>
				<input type="text" name="telefoneVeterinario" id="telefoneVeterinario" value="${veterinario.telefoneVeterinario}" class="form-control">
		</div>

		<div class="form-group">
			<label for="especialidade">Especialidade</label>
			<input type="text" name="especialidade" id="especialidade" value="${veterinario.especialidade}" class="form-control">
		</div>

		<button type="submit" class="btn btn-primary">Cadastrar</button>
		<a href="/" class="btn btn-success">Voltar</a>

	</form:form>

		<table class="table table-striped">
			<thead class="thead-dark">
				<tr>
					<th scope="col">CRV</th>
					<th scope="col">Nome Veterinário</th>
					<th scope="col">Telefone Veterinário</th>
					<th scope="col">Especialidade</th>
					<th scope="col" colspan="2">Ações</th>
				</tr>
			</thead>
			<tbody>
				<c:forEach var="veterinario" items="${veterinario}">
					<tr>
						<td scope="row">${veterinario.crv}</td>
						<td>${veterinario.nomeVeterinario}</td>
						<td>${veterinario.telefoneVeterinario}</td>
						<td>${veterinario.especialidade}</td>
						<td><a href="${altera}${veterinario.idVeterinario}" class="btn btn-warning">Alterar</a></td>
						<td><a href="${deleta}${veterinario.idVeterinario}" class="btn btn-danger"
							onclick="return confirm('Deseja deletar esse produto?');">Deletar</a></td>
						</tr>
						</c:forEach>
					</tbody>
				</table>		
		</div>

<script type="text/javascript" src="/js/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="/js/bootstrap.min.js"></script>

VETERINARIO DTO
package com.qintess.veterinaria.controller.dto;

import com.qintess.veterinaria.models.Veterinario;

public class VeterinarioDto {

private int idVeterinario;
private String crv;
private String nomeVeterinario;
private String telefoneVeterinario;
private String especialidade;


public VeterinarioDto() {
}


public VeterinarioDto(Veterinario v) {
	this.idVeterinario = idVeterinario;
	this.crv = crv;
	this.nomeVeterinario = nomeVeterinario;
	this.telefoneVeterinario = telefoneVeterinario;
	this.especialidade = especialidade;
}


public String getCrv() {
	return crv;
}
public void setCrv(String crv) {
	this.crv = crv;
}
public String getNomeVeterinario() {
	return nomeVeterinario;
}
public void setNomeVeterinario(String nomeVeterinario) {
	this.nomeVeterinario = nomeVeterinario;
}
public String getTelefoneVeterinario() {
	return telefoneVeterinario;
}
public void setTelefoneVeterinario(String telefoneVeterinario) {
	this.telefoneVeterinario = telefoneVeterinario;
}
public String getEspecialidade() {
	return especialidade;
}
public void setEspecialidade(String especialidade) {
	this.especialidade = especialidade;
}

public int getIdVeterinario() {
	return idVeterinario;
}

public void setIdVeterinario(int idVeterinario) {
	this.idVeterinario = idVeterinario;
}

public Veterinario conveter() {
	return new Veterinario(this.crv, this.especialidade, this.nomeVeterinario, this.telefoneVeterinario, null);
}


@Override
public String toString() {
	return "VeterinarioDto [idVeterinario=" + idVeterinario + ", crv=" + crv + ", nomeVeterinario="
			+ nomeVeterinario + ", telefoneVeterinario=" + telefoneVeterinario + ", especialidade=" + especialidade
			+ "]";
}

}

HOME - CLASSE ONDE PUXO A LIST
package com.qintess.veterinaria.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.GetMapping;

import com.qintess.veterinaria.controller.dto.VeterinarioDto;
import com.qintess.veterinaria.repositorios.VeterinarioRepository;

@Controller
public class HomeController {

@Autowired
private VeterinarioRepository veterinarioRepository;

@GetMapping("")
public String home(Model model) {
	model.addAttribute("veterinario", retornaVeterinarioDto());
	return "index";
}

private List <VeterinarioDto> retornaVeterinarioDto() {
	var veterinarioDto = new ArrayList<VeterinarioDto>();
	veterinarioRepository.findAll().forEach(v -> {
		veterinarioDto.add(new VeterinarioDto(v));
	});
	
	return veterinarioDto;
}

}

REPOSITORIO
package com.qintess.veterinaria.repositorios;

import org.springframework.data.repository.CrudRepository;

import com.qintess.veterinaria.models.Veterinario;

public interface VeterinarioRepository extends CrudRepository<Veterinario, Integer>{

}

Minha tabela tem retornado assim

4 Respostas

Jonathan_Medeiros

Você passa a entidade veterinário por parâmetro, mas não a utiliza para nada!

Não seria algo assim?

public VeterinarioDto(Veterinario v) {
	this.idVeterinario = v.getIdVeterinario();
	this.crv = v.getCrv();
	this.nomeVeterinario = v.getNomeVeterinario();
	this.telefoneVeterinario = v.getTelefoneVeterinario();
	this.especialidade = v.getEspecialidade();
}
O

de fato eu não estava usando a variável, mas agora que uso começo a ter um erro
There was an unexpected error (type=Method Not Allowed, status=405).

Request method ‘POST’ not supported

org.springframework.web.HttpRequestMethodNotSupportedException: Request method ‘POST’ not supported

<%@page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“ISO-8859-1”%>
<%@taglib prefix=“form” uri=“http://www.springframework.org/tags/form”%>
<%@taglib prefix=“spring” uri=“http://www.springframework.org/tags”%>

Cadastro - Veterinário
<jsp:include page="../comum/header.jsp"></jsp:include>

<div class="container">
	

	<div class="pb-2 mt-5 mb-2 border-bottom">
		<!-- page header -->
		<h4>Cadastro - Dados Pessoais</h4>
	</div>

	<form:form modelAttribute="veterinario" action="${cadastra}">

		<div class="form-group">
			<label for="crv">Número CRV</label> <input type="text" name="crv"
				id="crv" value="${veterinario.crv}" class="form-control">
		</div>

		<div class="form-group">
			<label for="nomeVeterinario">Nome Veterinário</label> <input
				type="text" name="nomeVeterinario" id="nomeVeterinario"
				value="${veterinario.nomeVeterinario}" class="form-control">
		</div>

		<div class="form-group">
			<label for="telefoneVeterinario">Telefone Veterinário</label> <input
				type="text" name="telefoneVeterinario" id="telefoneVeterinario"
				value="${veterinario.telefoneVeterinario}" class="form-control">
		</div>

		<div class="form-group">
			<label for="especialidade">Especialidade</label> <input type="text"
				name="especialidade" id="especialidade"
				value="${veterinario.especialidade}" class="form-control">
		</div>

		<div class="pb-2 mt-5 mb-2 border-bottom">
			<!-- page header -->
			<h4>Cadastro - Endereço</h4>
		</div>

		<div class="form-group">
			<label for="rua">Rua</label> <input type="text" name="rua" id="rua"
				value="${endereco.rua}" class="form-control">
		</div>

		<div class="form-group">
			<label for="número">Número</label> <input type="text" name="número"
				id="número" value="${endereco.número}" class="form-control">
		</div>

		<div class="form-group">
			<label for="complemento">Complemento</label> <input type="text"
				name="complemento" id="complemento"
				value="${endereco.complemento}" class="form-control">
		</div>

		<div class="form-group">
			<label for="bairro">Bairro</label> <input type="text" name="bairro"
				id="bairro" value="${endereco.bairro}" class="form-control">
		</div>

		<div class="form-group">
			<label for="cidade">Cidade</label> <input type="text" name="cidade"
				id="cidade" value="${endereco.cidade}" class="form-control">
		</div>

		<select id=Estado>
			<option>Selecione o estado</option>
			<option>Acre</option>
			<option>Alagoas</option>
			<option>Amapá</option>
			<option>Amazonas</option>
			<option>Bahia</option>
			<option>Distrito Federal</option>
			<option>Espírito Santo</option>
			<option>Goiás</option>
			<option>Maranhão</option>
			<option>Mato Grosso</option>
			<option>Mato Grosso do Sul</option>
			<option>Minas Gerais</option>
			<option>Pará</option>
			<option>Paraíba</option>
			<option>Paraná</option>
			<option>Pernambuco</option>
			<option>Piauí</option>
			<option>Rio de Janeiro</option>
			<option>Rio Grande do Norte</option>
			<option>Rio Grande do Sul</option>
			<option>Rondônia</option>
			<option>Roraima</option>
			<option>Santa Catarina</option>
			<option>São Paulo</option>
			<option>Sergipe</option>
			<option>Tocantins</option>

		</select>

		<button type="submit" class="btn btn-primary">Cadastrar</button>
		<a href="/" class="btn btn-success">Voltar</a>

	</form:form>

	<table class="table table-striped">
		<thead class="thead-dark">
			<tr>
				<th scope="col">CRV</th>
				<th scope="col">Nome Veterinário</th>
				<th scope="col">Telefone Veterinário</th>
				<th scope="col">Especialidade</th>
				<th scope="col" colspan="2">Ações</th>
			</tr>
		</thead>
		<tbody>
			<c:forEach var="veterinario" items="${veterinario}">
				<tr>
					<td scope="row">${veterinario.crv}</td>
					<td>${veterinario.nomeVeterinario}</td>
					<td>${veterinario.telefoneVeterinario}</td>
					<td>${veterinario.especialidade}</td>
					<td><a href="${altera}${veterinario.idVeterinario}"
						class="btn btn-warning">Alterar</a></td>
					<td><a href="${deleta}${veterinario.idVeterinario}"
						class="btn btn-danger"
						onclick="return confirm('Deseja deletar esse produto?');">Deletar</a></td>
				</tr>
			</c:forEach>
		</tbody>
	</table>
</div>

<script type="text/javascript" src="/js/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="/js/bootstrap.min.js"></script>
Jonathan_Medeiros

Seu formulário está enviando uma requisição POST, porém, seu controller não tem nenhum método que corresponda ao tipo enviado, por isso você está recebendo este erro!

O

mas em momento algum eu pass um método diferente de POST, não estou entendendo de onde esta derivando o erro.

Criado 14 de fevereiro de 2021
Ultima resposta 15 de fev. de 2021
Respostas 4
Participantes 2