Estou com o seguinte problema tenho os mapeamentos abaixo e um <p:commandButtom> que chama o método no MB para persistir minhas entidades no banco de dados. Acontece que as entidades só são persistidas se pressionar o botão duas vezes… no primeiro press o evento no MB é chamado mas não há a persistência no banco de dados…
Tenho o seguinte mapeamento de um lado
@OneToMany(mappedBy="diario",targetEntity=Chamada.class)
@Cascade(CascadeType.SAVE_UPDATE)
private List<Chamada> chamadas = new LinkedList<Chamada>();
e do outro
@ManyToOne(targetEntity = Diario.class, fetch = FetchType.LAZY)
@JoinColumn(referencedColumnName = "uuid", name = "diario")
@Cascade(CascadeType.SAVE_UPDATE)
No MB tenho um método que realiza as persistência no banco de dados
matriculas = getMatriculas();
for (MatriculaDisciplina m : matriculas) {
Chamada chamada = new Chamada();
chamada.setAluno(m.getAluno());
chamada.setDiario(diario);
chamada.setFaculdade(AppUtil.getFaculdade());
chamada.setUuid("WEB-" + UUID.randomUUID().toString());
chamada.setOrigem("WEB");
chamada.setPresenca(false);
chamada.setObservacao("");
diario.getChamadas().add(chamada);
}//end for
salvarDiario();
}//end method
public void salvarDiario() {
try {
DiarioDao dao = new DiarioDao();
dao.salvarDiario(diario);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "", "Operação concluída com sucesso"));
} catch (HibernateException ex) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Atenção", ex.getMessage()));
ex.printStackTrace();
}//end catch
}//end method