Hibernate nao atualiza a data e a hora automaticamente no banco postgres

31/08/2018

5

Estou desenvolvendo um sisteminha, 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 atualizo os dados, a data e a hora nao estao atualizando. Poderiam dar uma ajudinha?
meu bean:

@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");
}

}
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="#" />
</p:commandButton>

<p:commandButton icon="ui-icon-pencil"
actionListener="#{areaBean.editar}" update=":formCadastro:painel"
oncomplete="PF('dialogo').show();">
<f:attribute name="areaSelecionado" value="#" />
<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>
Silvio

Silvio

Responder

Posts

31/08/2018

Marcio Souza

Mas em que parte do código você faz a atualização da data? Não que postou não.
Responder

31/08/2018

Silvio

a data e a hora será gravado automaticaticamente ao atualizar. está no domain:
aqui:
@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());

no beean faz o salva/editar:
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 editar(ActionEvent evento){
area = (Area) evento.getComponent().getAttributes().get("areaSelecionado");
}

essa é a prte do xhtml (é um botao) e edita os dados:

<p:commandButton icon="ui-icon-pencil"
actionListener="#{areaBean.editar}" update=":formCadastro:painel"
oncomplete="PF('dialogo').show();">
<f:attribute name="areaSelecionado" value="#" />
<f:actionListener
type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</p:commandButton>

Lembrando que a data e a hora vai pegar do sistema, e o campo descricao e o situação sera digitado pelo usuario.


Responder

02/09/2018

Marcio Souza

Ok, tente colocar a instancia que cria a data no método set() e não na declaração do atributo.

public void setHora(Date hora) {
    this.hora = new java.sql.Date(System.currentTimeMillis());
}
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar