E ae galera, preciso de uma ajuda. :?:
Estou tentando fazer a parte de edição de uma entidade do meu sistema mas não estou conseguindo. Ja fiz cadastro, buscar todos e excluir, e estou com duvida nessa parte.
Devo passar apenas o id do objeto para buscar no banco e criar um método na casse “DAOTvCamara”, por exemplo ou passar um objeto e criar um método genérico na classe AbstractDAO ?? Também pensei na possibilidade de passar o objeto inteiro para o controller e ele retornar direto para a view de edição. Seria certo?
VIEW
<td>
<form id="form_editar" action='<c:url value="/mapcontrole/editartv" />' method="post">
<input type='hidden' name='tvDto.id' value='${item.id}'/>
<input type="submit" value="Editar"/>
</form>
</td>
No momento estou passando um objeto instanciado com apenas o id valorado e tentando fazer uma busca por criteria no método AbstractDAO.
[code]public T buscarPorId(T obj) throws Exception {
Session sessao = null;
sessao = getSessionFactory().openSession();
try {
sessao = getSessionFactory().openSession();
return (T) sessao.createCriteria(obj.getClass())
.add(Restrictions.idEq(obj)).uniqueResult();
} catch (Exception e) {
throw new Exception("Erro ao buscar por id - Camada AbstractDAO" + e.getMessage());
} finally{
sessao.close();
}
}[/code]
Porem como o id passado fica como Integer e ele no banco esta como LONG ele não consegue converter e lança um erro.
OBS.: Estou utilizando VO e DTO nos models.
ERRO:
java.lang.ClassCastException: org.hibernate.internal.CriteriaImpl cannot be cast to br.com.chavantes.camara.tvcamara.vo.TvCamaraVO