Estou desenvolvendo um sisteminha em maven, pra fins de conhecimento. Estou usando eclipse, photon,postgres, hibernate, maven e primefaces. Ele grava os dados normalmente no banco de dados. A data e hora ele ta pegando automaticamente do sistema. Até ai ta blz. Contudo qdo atualzo os dados, a data e a hora nao estao atualizando.
Segue os dados:
Meu domain:
package br.pro.silvio.prati.domain;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@SuppressWarnings("serial")
@Entity
public class Area extends GenericDomain {
@Column(name = "nome",length =20, nullable = false)
private String nome;
@Column( name = "status",length =10)
private String status;
@Column(name = "cadpor",length =20)
private String cadpor;
@Column(name ="datcad")
@Temporal(TemporalType.DATE)
private Date datcad = new java.sql.Date(System.currentTimeMillis());
@Column(name = "hora")
@Temporal(TemporalType.TIME)
private Date hora =new java.sql.Date(System.currentTimeMillis());
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getCadpor() {
`return cadpor;`
}
public void setCadpor(String cadpor) {
this.cadpor = cadpor;
}
public Date getDatcad() {
return datcad;
}
public void setDatcad(Date datcad) {
this.datcad = datcad;
}
public Date getHora() {
return hora;
}
public void setHora(Date hora) {
this.hora = hora;
}
}
meu dao e dao generico:
package br.pro.silvio.prati.dao;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import br.pro.silvio.prati.util.HibernateUtil;
public class GenericDAO<Entidade> {
private Class<Entidade> classe;
@SuppressWarnings("unchecked")
public GenericDAO() {
this.classe = (Class<Entidade>) ((ParameterizedType) getClass().getGenericSuperclass())
.getActualTypeArguments()[0];
}
public void salvar(Entidade entidade) {
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction();
sessao.save(entidade);
transacao.commit();
} catch (RuntimeException erro) {
if (transacao != null) {
transacao.rollback();
}
throw erro;
} finally {
sessao.close();
}
}
@SuppressWarnings("unchecked")
public List<Entidade> listar() {
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
try {
Criteria consulta = sessao.createCriteria(classe);
List<Entidade> resultado = consulta.list();
return resultado;
} catch (RuntimeException erro) {
throw erro;
} finally {
sessao.close();
}
}
@SuppressWarnings("unchecked")
public Entidade buscar(Long codigo) {
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
try {
Criteria consulta = sessao.createCriteria(classe);
consulta.add(Restrictions.idEq(codigo));
Entidade resultado = (Entidade) consulta.uniqueResult();
return resultado;
} catch (RuntimeException erro) {
throw erro;
} finally {
sessao.close();
}
}
public void excluir(Entidade entidade) {
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction();
sessao.delete(entidade);
transacao.commit();
} catch (RuntimeException erro) {
if (transacao != null) {
transacao.rollback();
}
throw erro;
} finally {
sessao.close();
}
}
public void editar(Entidade entidade) {
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction();
sessao.update(entidade);
transacao.commit();
} catch (RuntimeException erro) {
if (transacao != null) {
transacao.rollback();
}
throw erro;
} finally {
sessao.close();
}
}
public void merge(Entidade entidade) {
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction();
sessao.merge(entidade);
transacao.commit();
} catch (RuntimeException erro) {
if (transacao != null) {
transacao.rollback();
}
throw erro;
} finally {
sessao.close();
}
}
}
package br.pro.silvio.prati.dao;
import br.pro.silvio.prati.domain.Area;
public class AreaDAO extends GenericDAO<Area>{
}
meu bean:
package br.pro.silvio.prati.bean;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import org.omnifaces.util.Messages;
import br.pro.silvio.prati.dao.AreaDAO;
import br.pro.silvio.prati.domain.Area;
@SuppressWarnings("serial")
@ManagedBean
@ViewScoped
public class AreaBean implements Serializable {
private Area area;
private List<Area> areas;
public Area getArea() {
return area;
}
public void setArea(Area area) {
this.area = area;
}
public List<Area> getAreas() {
return areas;
}
public void setAreas(List<Area> areas) {
this.areas = areas;
}
@PostConstruct
public void listar() {
try {
AreaDAO areaDAO = new AreaDAO();
areas = areaDAO.listar();
} catch (RuntimeException erro) {
Messages.addGlobalError("Ocorreu um erro ao tentar listar as AREAS");
erro.printStackTrace();
}
}
public void novo() {
area = new Area();
}
public void salvar() {
try {
AreaDAO areaDAO = new AreaDAO();
areaDAO.merge(area);
novo();
areas = areaDAO.listar();
Messages.addGlobalInfo("Area salvo com sucesso");
} catch (RuntimeException erro) {
Messages.addGlobalError("Ocorreu um erro ao tentar salvar a AREA");
erro.printStackTrace();
}
}
public void excluir(ActionEvent evento) {
try {
area = (Area) evento.getComponent().getAttributes().get("areaSelecionado");
AreaDAO areaDAO = new AreaDAO();
areaDAO.excluir(area);
areas = areaDAO.listar();
Messages.addGlobalInfo("Estado removido com sucesso");
} catch (RuntimeException erro) {
Messages.addFlashGlobalError("Ocorreu um erro ao tentar remover o estado");
erro.printStackTrace();
}
}
public void editar(ActionEvent evento){
area = (Area) evento.getComponent().getAttributes().get("areaSelecionado");
}
}
e por fim , meu xhtml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Are</title>
</h:head>
<h:body>
<p:growl id="mensagem" />
<h:form id="formListagem">
<p:panel header="AREA - Listagem">
<p:dataTable id="tabela" emptyMessage="Nenhum registro encontrado."
paginator="true" value="#{areaBean.areas}" var="item" rows="8">
<f:facet name="header">
<p:commandButton value="Novo" oncomplete="PF('dialogo').show();"
actionListener="#{areaBean.novo}" update=":formCadastro:painel">
<f:actionListener
type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</p:commandButton>
</f:facet>
<p:column headerText="Código" sortBy="#{item.codigo}"
filterBy="#{item.codigo}">
<h:outputText value="#{item.codigo}" />
</p:column>
<p:column headerText="Descricao" sortBy="#{item.nome}"
filterBy="#{item.nome}">
<h:outputText value="#{item.nome}" />
</p:column>
<p:column headerText="Status" sortBy="#{item.status}"
filterBy="#{item.status}">
<h:outputText value="#{item.status}" />
</p:column>
<p:column headerText="Cadastrado por" sortBy="#{item.cadpor}"
filterBy="#{item.cadpor}">
<h:outputText value="#{item.cadpor}" />
</p:column>
<p:column headerText="Data" sortBy="#{item.datcad}"
filterBy="#{item.datcad}">
<h:outputText value="#{item.datcad}">
<f:convertDateTime locale="pt_BR" />
</h:outputText>
</p:column>
<p:column headerText="Hora">
<h:outputText value="#{item.hora}" />
</p:column>
<p:column headerText="Opções">
<p:commandButton icon="ui-icon-trash"
actionListener="#{areaBean.excluir}"
update=":mensagem :formListagem:tabela">
<p:confirm header="Confirmação" message="Deseja excluir 'AREA'?"
icon="ui-icon-alert" />
<f:attribute name="areaSelecionado" value="#{item}" />
</p:commandButton>
<p:commandButton icon="ui-icon-pencil"
actionListener="#{areaBean.editar}" update=":formCadastro:painel"
oncomplete="PF('dialogo').show();">
<f:attribute name="areaSelecionado" value="#{item}" />
<f:actionListener
type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</p:commandButton>
</p:column>
</p:dataTable>
<p:confirmDialog global="true" showEffect="fade" hideEffect="fade">
<p:commandButton value="Sim" type="button"
styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="Não" type="button"
styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</p:panel>
</h:form>
<p:dialog header="AREA - Cadastro" widgetVar="dialogo"
draggable="false" resizable="false" modal="true" closable="false">
<h:form id="formCadastro">
<h:panelGrid id="painel" columns="2">
<p:outputLabel value="Descrição:" />
<p:inputText maxlength="30" size="20" value="#{areaBean.area.nome}"
required="true" requiredMessage="O campo Descricao é obrigatório!" />
<p:outputLabel value="Situação:" />
<p:selectOneMenu value="#{areaBean.area.status}" required="true"
requiredMessage="O campo Situacao é obrigatório!">
<f:selectItem itemValue="" itemLabel="Selecione.." />
<f:selectItem itemValue="Ativo" itemLabel="Ativo" />
<f:selectItem itemValue="Inativo" itemLabel="Inativo" />
</p:selectOneMenu>
</h:panelGrid>
<h:panelGrid columns="2">
<p:commandButton value="Salvar" actionListener="#{areaBean.salvar}"
update=":mensagem :formCadastro:painel :formListagem:tabela" />
<p:commandButton value="Fechar" oncomplete="PF('dialogo').hide();" />
</h:panelGrid>
</h:form>
</p:dialog>
</h:body>
</html>
ele grava de boa a data e a hora , mas quando é pra atualizar, só atualiza outros campos mas não a data e a hora. o que pode ser?
