Bom dia, estou com o seguinte problema:
"could not get a field value by reflection getter"
Consigo listar todos os contatos, mas não consigo listar os contatos por cliente.. acredito que eu não esteja conseguindo passar o cliente.. segue os códigos abaixo, se puderem me ajudar:
@Resource
public class ContatosController
{
private final Result result;
private final Validator validator;
private final ContatoDao daoCont;
public ContatosController(ClienteDao dao, Result result,
Validator validator, ContatoDao daoCont)
{
this.result = result;
this.validator = validator;
this.daoCont = daoCont;
}
@Get
@Path("/contatos/cliente/{cliente.codigo}")
public List<Contato> lista(Cliente cliente)
{
return daoCont.listarPorCliente(cliente);
}
}
@Component
public class ContatoDao
{
private final Session session;
public ContatoDao(Session session)
{
this.session = session;
}
public Contato carrega(Long codigo)
{
return (Contato) this.session.load(Contato.class, codigo);
}
public void atualiza(Contato contato)
{
Transaction tx = session.beginTransaction();
this.session.update(contato);
tx.commit();
}
public void remove(Contato contato)
{
Transaction tx = session.beginTransaction();
this.session.delete(contato);
tx.commit();
}
public void salva(Contato contato)
{
Transaction tx = session.beginTransaction();
session.save(contato);
tx.commit();
}
@SuppressWarnings("unchecked")
public List<Contato> listarPorCliente(Cliente cliente)
{
Query query = session
.createQuery("from Contato WHERE cliente = :codigo_cliente ORDER BY apelido ASC");
query.setParameter("codigo_cliente", cliente.getCodigo());
return query.list();
}
@SuppressWarnings("unchecked")
public List<Contato> listar()
{
Query query = session.createQuery("from Contato ORDER BY nome ASC");
return query.list();
}
}
<%@page contentType="text/html;charset=ISO-8859-1"%>
<%@page pageEncoding="iso-8859-1"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<table>
<thead>
<tr>
<th width="410">NOME CONTATO</th>
<th width="80">REMOVER</th>
</tr>
</thead>
<tbody>
<c:forEach items="${contatoList}" var="contato">
<tr>
<td><a href= "<c:url value="/contatos/${contato.codigo}"/>">${contato.nome}</a></td>
<td>
<form action="<c:url value="/contatos/${contato.codigo}"/>" method="POST">
<button class="link" name= "_method" value= "DELETE">Remover</button>
</form>
</td>
</c:forEach>
</tbody>
</table>
@Entity
public class Contato
{
@Id
@GeneratedValue
@NotNull
private long codigo;
@ManyToOne
@JoinColumn(name = "cliente")
private Cliente cliente;
private String nome;
public long getCodigo()
{
return codigo;
}
public void setCodigo(long codigo)
{
this.codigo = codigo;
}
public Cliente getCliente()
{
return cliente;
}
public void setCliente(Cliente cliente)
{
this.cliente = cliente;
}
public String getNome()
{
return nome;
}
public void setNome(String nome)
{
this.nome = nome;
}
}