Minhas cordiais saudações comunidade,
Tenha navegado muito para solucionar um problema. Encontrei vários tópicos referentes e pude tirar proveito para estar onde estou.
Bom, sem mais conversa… espero que possam me ajudar!
NAVEGANDO PELA NET VI VÁRIOS TÓPICOS COM DAO GENÉRICO.
ESTA É A SOLUÇÃO MAIS VIÁVEL PARA FAZER ESSE MAPEAMENTO?
TENHO UM SISTEMA PARA CAPTAÇÃO DE CLIENTES NO JDBC RODANDO, HIBERNATE NÃO CONSIGO.
UMA ORIENTAÇÃO POR FAVOR.
Estou utilizando a apostila da caelum FJ28 como referência para construir um sistema de captação de clientes.
O banco de dados está modelado conforme requisitos do hibernate (fk_ not null).
Problema está sendo na hora de salvar, dá um exception:
type Exception report
message exception raised, check root cause for details: net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method formulario
description The server encountered an internal error that prevented it from fulfilling this request.
exception
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: net.vidageek.mirror.exception.ReflectionProviderException: Could not invoke method formulario
Logo abaixo ele até diz "Property ‘idCliente’ not found on type ".
E quando lanço a propriedade nem abre a aplicação. Erro 404.
Segue código
@Entity
public class Cliente{
@Id @GeneratedValue
private Long idCliente;
@OneToMany(mappedBy = "cliente", targetEntity = Contato.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<Contato> contato;
@Entity
@Table(name="Contato")
public class Contato{
@NotNull
@ManyToOne
@JoinColumn(name = "idCliente")
private Cliente cliente;
@Component
public class ContatoDao {
private final Session session;
public ContatoDao(Session session){
this.session = session;
}
public void salvaContato(Contato contato) {
Transaction tx = session.beginTransaction();
session.save(contato);
tx.commit();
}
@Resource
public class ContatosController {
private final ContatoDao dao;
private final ClienteDao daoCliente;
private final Validator validator;
private final Result result;
public ContatosController(ContatoDao dao, Validator validator, Result result, ClienteDao daoCliente){
this.dao = dao;
this.daoCliente = daoCliente;
this.validator = validator;
this.result = result;
}
@Get @Path("/contatos/novo")
public void formulario(){
}
@Post @Path("/contatos")
public void adicionaContato(Contato contato, Cliente cliente){
validator.validate(contato);
validator.onErrorUsePageOf(ContatosController.class).formulario();
dao.salvaContato(contato);
daoCliente.salva(cliente);
result.redirectTo(ClientesController.class).listaCaptacao();
}