public String abrirHistorico() {
return "historico";
}
Quando eu vou salvar um historico, aparece o erro:
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/webchamado] threw exception [javax.servlet.ServletException: object references an unsaved transient instance - save the transient instance before flushing: webchamado.chamado.Chamado] with root cause
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: webchamado.chamado.Chamado
bean de salvar historico:
[code]
public void salvarHistorico() {
ContextoBean cb = new ContextoBean(); //pra pegar o usuario que está logado
this.historico.setDataHistorico(Calendar.getInstance());
this.historico.setUsuarioEscreveu(cb.getUsuarioLogado().getNome());
this.historico.setChamadoReferente(this.chamado);
HistoricoRN histRN = new HistoricoRN();
histRN.salvar(this.historico);
this.listaHistorico = null;
this.historico = new Historico();
}[/code]
pelo q eu entendi, quando eu chamo o historico o chamado fica carregado pelo hibernate
já tentei dar cascade all, mas ae ele salva com um codigo de chamado novo e cria um novo chamado, lol
hj tá brabo… erro erro erro… e o tcc é em dezembro
O que parece ser seu problema é que o Chamado não está acoplado a sessão do Hibernate. O que pode ser é que você deixou ele na HttpSession e fechou a Session do hibernate. Na hora que você vai salvar o histórico, ele reclama que o this.chamado que você está usando não faz mais parte da sessão.
Ou ele acha que eu tenho que salvar o chamado junto ?
Se alguém puder me ajudar eu agradeço, estou pensando em desistir de implementar o histórico no sistema já…
Os passos pra chegar no histórico são:
Usuario loga no sistema;
Usuario clica para ver os chamados;
Usuario clica em HISTORICO em algum chamado (botão no panel, dento de um datagrid);
Sistema redireciona para a página de histórico, carregando o chamado na parte superior, no meio fica um datagrid com cada historico referente ao chamado, e em baixo fica um form pra ele adicionar outro histórico;
O Historico nada mais é que uma atualização do chamado, tipo (“entrei em contato com o cliente blablabla”) escrita pelo proprio usuario, o sistema pega a data e posta, como se fosse um post simples;
Quando vou salvar o historico, eu só queria na verdade o chamado pra pegar o codigo do chamado
O chamado ao qual o histórico está referenciado não está salvo na sessão.
Mapeie na anotação de Chamado em histórico utilize Cascade.All para o cascadetype, ou salve antes o histório na sessão.
eu acho q sei oq está acontecendo.
coloquei um System.out no metodo do Bean que salva o historico pra ver se ele está pegando o chamado, e voltou null!
oq será que estou fazendo errado ? vou colocar os codigos