Bom, eu estou pesquisando muito sobre uma tela crud com Primafaces e usando Hibernate, olhei os padrões MVC. Consultei várias apostilas da Caelum, K19, AlgaWorks e não conseguir incluir o registro na tabela. Assim decidi postar minha duvida aqui.
Vou postar o código e ele não apresenta nenhum erro no console.
Este é o pacote DAO.
[code]package dao;
import util.HibernateUtil;
import controle.*;
import java.util.List;
import model.Atestado;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
/**
*
-
@author IPASI
*/
public class AtestadoDAO {Atestado atestado = new Atestado();
public Atestado getAtestado() {
return atestado;
}public void setAtestado(Atestado atestado) {
this.atestado = atestado;
}public void Salva(Atestado atestado) {
Session session = HibernateUtil.getSession();
Transaction trans = session.beginTransaction();
session.save(atestado);
trans.commit();}
public void Deleta(Atestado atestado) {
Session session = HibernateUtil.getSession();
Transaction trans = session.beginTransaction();session.delete(atestado); trans.commit();
}
public void Altera(Atestado atestado) {
Session session = HibernateUtil.getSession();
Transaction trans = session.beginTransaction();
session.update(atestado);
trans.commit();
}public Atestado PesquisaCod() {
Session session = HibernateUtil.getSession();
try {
return (Atestado) session.get(Atestado.class, atestado.getAtestadoPK().getIdAtestado());
} finally {
session.close();
}
}public List PesquisaPeriodo() {
Session session = HibernateUtil.getSession(); Criteria criteria = session.createCriteria(Atestado.class); List<Atestado> lista = criteria.add(Restrictions.between("Pesquisa_Periodo", atestado.getDatainicio(), atestado.getDatafim())).list(); session.close(); return lista;
}
}[/code]
Controle
package controle;
import dao.*;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import model.Atestado;
/**
*
* @author IPASI
*/
public class AtestadoControle {
private Atestado atestado;
public Atestado getAtestado() {
return atestado;
}
public void setAtestado(Atestado atestado) {
this.atestado = atestado;
}
public String Salva(ActionEvent evento) {
FacesContext context = FacesContext.getCurrentInstance();
try {
new AtestadoDAO().Salva(atestado);
FacesMessage msg = new FacesMessage(
"atestado salva com sucesso!");
msg.setSeverity(FacesMessage.SEVERITY_INFO);
context.addMessage(null, msg);
atestado = new Atestado();
} catch (Exception e) {
e.printStackTrace();
FacesMessage msg = new FacesMessage(
"Erro inesperado ao salvar conta!");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(null, msg);
}
return null;
}
public String Altera(ActionEvent evento) {
FacesContext context = FacesContext.getCurrentInstance();
try {
new AtestadoDAO().Salva(atestado);
FacesMessage msg = new FacesMessage(
"atestado salva com sucesso!");
msg.setSeverity(FacesMessage.SEVERITY_INFO);
context.addMessage(null, msg);
} catch (Exception e) {
e.printStackTrace();
FacesMessage msg = new FacesMessage(
"Erro inesperado ao salvar conta!");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(null, msg);
}
return null;
}
public String PesquisaNome() {
return null;
}
public String PesquisaCod() {
return null;
}
public String PesquisaPeriodo() {
return null;
}
public String Delete(ActionEvent evento) {
FacesContext context = FacesContext.getCurrentInstance();
try {
new AtestadoDAO().Salva(atestado);
FacesMessage msg = new FacesMessage(
"atestado salva com sucesso!");
msg.setSeverity(FacesMessage.SEVERITY_INFO);
context.addMessage(null, msg);
} catch (Exception e) {
e.printStackTrace();
FacesMessage msg = new FacesMessage(
"Erro inesperado ao salvar conta!");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(null, msg);
}
return null;
}
public String Imprimir() {
return null;
}
public String Relatorio() {
return null;
}
}
Este é o Modelo
[code]package model;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
-
@author jon
*/
@Entity
@Table(name = “atestado”)
@XmlRootElement
@NamedQueries({
@NamedQuery(name = “Atestado.findAll”, query = “SELECT a FROM Atestado a”),
@NamedQuery(name = “Atestado.findByIdAtestado”, query = “SELECT a FROM Atestado a WHERE a.atestadoPK.idAtestado = :idAtestado”),
@NamedQuery(name = “Atestado.findByDatainicio”, query = “SELECT a FROM Atestado a WHERE a.datainicio = :datainicio”),
@NamedQuery(name = “Atestado.findByDatafim”, query = “SELECT a FROM Atestado a WHERE a.datafim = :datafim”),
@NamedQuery(name = “Atestado.findByHora”, query = “SELECT a FROM Atestado a WHERE a.hora = :hora”),
@NamedQuery(name = “Atestado.findByObservacao”, query = “SELECT a FROM Atestado a WHERE a.observacao = :observacao”),
@NamedQuery(name = “Atestado.findByFuncionarioidFuncionario”, query = “SELECT a FROM Atestado a WHERE a.atestadoPK.funcionarioidFuncionario = :funcionarioidFuncionario”)})
public class Atestado implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected AtestadoPK atestadoPK;
@Column(name = “datainicio”)
@Temporal(TemporalType.DATE)
private Date datainicio;
@Column(name = “datafim”)
@Temporal(TemporalType.DATE)
private Date datafim;
@Column(name = “hora”)
@Temporal(TemporalType.TIME)
private Date hora;
@Size(max = 400)
@Column(name = “observacao”,nullable=true)
private String observacao;public Atestado() {
}public Atestado(AtestadoPK atestadoPK) {
this.atestadoPK = atestadoPK;
}public Atestado(long idAtestado, long funcionarioidFuncionario) {
this.atestadoPK = new AtestadoPK(idAtestado, funcionarioidFuncionario);
}public AtestadoPK getAtestadoPK() {
return atestadoPK;
}public void setAtestadoPK(AtestadoPK atestadoPK) {
this.atestadoPK = atestadoPK;
}public Date getDatainicio() {
return datainicio;
}public void setDatainicio(Date datainicio) {
this.datainicio = datainicio;
}public Date getDatafim() {
return datafim;
}public void setDatafim(Date datafim) {
this.datafim = datafim;
}public Date getHora() {
return hora;
}public void setHora(Date hora) {
this.hora = hora;
}public String getObservacao() {
return observacao;
}public void setObservacao(String observacao) {
this.observacao = observacao;
}@Override
public int hashCode() {
int hash = 0;
hash += (atestadoPK != null ? atestadoPK.hashCode() : 0);
return hash;
}@Override
public boolean equals(Object object) {
// TODO: Warning - this method won’t work in the case the id fields are not set
if (!(object instanceof Atestado)) {
return false;
}
Atestado other = (Atestado) object;
if ((this.atestadoPK == null && other.atestadoPK != null) || (this.atestadoPK != null && !this.atestadoPK.equals(other.atestadoPK))) {
return false;
}
return true;
}@Override
public String toString() {
return “Entidades.Atestado[ atestadoPK=” + atestadoPK + " ]";
}
}
[/code]
package model;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.validation.constraints.NotNull;
/**
*
* @author jon
*/
@Embeddable
public class AtestadoPK implements Serializable {
@Basic(optional = false)
@NotNull
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name = "idAtestado")
private long idAtestado;
@Basic(optional = false)
@NotNull
@Column(name = "Funcionario_idFuncionario")
private long funcionarioidFuncionario;
public AtestadoPK() {
}
public AtestadoPK(long idAtestado, long funcionarioidFuncionario) {
this.idAtestado = idAtestado;
this.funcionarioidFuncionario = funcionarioidFuncionario;
}
public long getIdAtestado() {
return idAtestado;
}
public void setIdAtestado(long idAtestado) {
this.idAtestado = idAtestado;
}
public long getFuncionarioidFuncionario() {
return funcionarioidFuncionario;
}
public void setFuncionarioidFuncionario(long funcionarioidFuncionario) {
this.funcionarioidFuncionario = funcionarioidFuncionario;
}
@Override
public int hashCode() {
int hash = 0;
hash += (int) idAtestado;
hash += (int) funcionarioidFuncionario;
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof AtestadoPK)) {
return false;
}
AtestadoPK other = (AtestadoPK) object;
if (this.idAtestado != other.idAtestado) {
return false;
}
if (this.funcionarioidFuncionario != other.funcionarioidFuncionario) {
return false;
}
return true;
}
@Override
public String toString() {
return "Entidades.AtestadoPK[ idAtestado=" + idAtestado + ", funcionarioidFuncionario=" + funcionarioidFuncionario + " ]";
}
}
A parte do codigo que insere.
<h:form>
<pou:fieldset id="NovoAtes" toggleable="true" legend="Cadastra Atestado">
<h:panelGrid id="InsAtestado" style="margin-bottom:10px">
<h:outputLabel for="NomeAtestIns" value="Nome"/>
<pou:inputText id="NameAtestIns" required="true" value="#{AtestadoBean.atestado.atestadoPK.funcionarioidFuncionario}" />
<h:outputLabel for="HoraAtesIns" value="Nome"/>
<pou:inputText id="HoraAtesIns" required="true" value="#{AtestadoBean.atestado.atestado.hora}" />
<h:outputLabel for="DataInicialIns" value="Data Inicial"/>
<pou:calendar id="DataInicialIns" pattern="dd/MM/yyyy" required="true" value="#{AtestadoBean.atestado.datainicio}"/>
<h:outputLabel for="DataFinalIns" value="Data Final"/>
<pou:calendar id="DataFinalIns" pattern="dd/MM/yyyy" required="true" value="#{AtestadoBean.atestado.datafim}" />
<h:outputLabel for="ObsAtestadoIns" value="Observação" />
<pou:inputTextarea id="ObsAtestadoIns" value="#{AtestadoBean.atestado.observacao}" />
<pou:commandButton id="Salvar" value="Salvar" actionListener="#{AtestadoBean.salva}"/>
</h:panelGrid>
</pou:fieldset>
</h:form>
Antes que me perguntem eu já criei o BD e as tabelas também.
Persistencia
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/ponto</property>
<property name="hibernate.connection.username">root</property>
<mapping class="model.Atestado"/>
</session-factory>
</hibernate-configuration>
Faces- config
[code]?xml version=‘1.0’ encoding=‘UTF-8’?>
AtestadoBean
controle.AtestadoControle
request