@Paulo_J_Silva escreveu:
Pessoal, estou com um problema muito chato. Pesquisei muito e não consegui resolver.
É o seguinte, toda vez que eu carrego a pagina pela primeira vez.... ela carrega os dados exatamente como esta no banco de dados, entretanto caso alguma alteração tenha sido feita, não importa o jeito que eu tento atualizar a pagina e os dados carregados sempre são iguais a primeira vez que eu carreguei, já tentei desativar o cache do hibernate dou clear() na sessão e a única solução é quando eu reinicio o tomcat, entretanto minha aplicação não pode ficar com esse bug pois a alteração dos dados ocorre com muita frequência!Segue a configuração do Hibernate!
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://xxxxxxx:3306/sfmsp-homo?zeroDateTimeBehavior=convertToNull</property> <property name="connection.username">root</property> <property name="connection.password">xxxxx</property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <!-- Mapeamento das entidades --> <mapping class="hagape.domain.tb_tipo_negocio" /> <mapping class="hagape.domain.tb_categoria_produto" /> <mapping class="hagape.domain.tb_produto" /> <mapping class="hagape.domain.tb_medida" /> <mapping class="hagape.domain.tb_estoque" /> <mapping class="hagape.domain.tb_estoque_produto" /> <mapping class="hagape.domain.tb_cidade" /> <mapping class="hagape.domain.tb_uf" /> <mapping class="hagape.domain.tb_unidade_medida" />
a Servlet:
<?xml version="1.0" encoding="UTF-8" ?>
<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">
Hagape
<p:panel
header="Listagem das Categorias referente a tabela - 'tb_categoria_produto'">
<p:dataTable id="dataTableListagem"
emptyMessage="Nenhum registro encontrado." paginator="true"
value="#{categoriaProdutoBean.categorias}" var="categoria" rows="10"><f:facet name="footer"> <p:commandButton value="Novo" actionListener="#{categoriaProdutoBean.refresh}" oncomplete="PF('dialogo').show();" update=":mensagem :formCadastro:painelCadastro :formListagem:dataTableListagem"> <f:actionListener type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" /> </p:commandButton> </f:facet> <p:column headerText="Nome" filterBy="#{categoria.txt_nome}" sortBy="#{categoria.txt_nome}"> <h:outputText value="#{categoria.txt_nome}" /> </p:column> <p:column headerText="Tipo de Negócio" sortBy="#{categoria.tipo_negocio.txt_tipo}" filterBy="#{categoria.tipo_negocio.txt_tipo}"> <h:outputText value="#{categoria.tipo_negocio.txt_tipo}" /> </p:column> <p:column headerText="Categoria Pai" filterBy="#{categoria.id_categoria_pai}"> <h:outputText value="#{categoria.id_categoria_pai}" /> </p:column> <p:column headerText="Situação" filterBy="#{categoria.situacao}" sortBy="#{categoria.situacao}"> <h:outputText value="#{categoria.situacao}" /> </p:column> <p:column headerText="Opções"> <p:commandButton icon="ui-icon-pencil" oncomplete="PF('dialogo').show();" actionListener="#{categoriaProdutoBean.edita}" update=":mensagem :formCadastro:painelCadastro"> <f:attribute name="categoriaSelecionada" value="#{categoria}" /> <f:actionListener type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" /> </p:commandButton> <p:commandButton icon="ui-icon-trash" actionListener="#{categoriaProdutoBean.excluir}" update=":mensagem :formCadastro:painelCadastro :formListagem:dataTableListagem"> <p:confirm header="Confirmação" message="Voce deseja exluir essa 'Categoria'?" icon="ui-icon-alert" /> <f:attribute name="categoriaSelecionada" value="#{categoria}" /> </p:commandButton> </p:column> </p:dataTable> <p:confirmDialog global="true"> <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="Cadastro de Categorias" widgetVar="dialogo" draggable="false" resizable="false" modal="true" closable="false"> <h:form id="formCadastro"> <h:panelGrid id="painelCadastro" columns="2"> <p:outputLabel for="nome" value="Nome:" /> <p:inputText id="nome" value="#{categoriaProdutoBean.categoria.txt_nome}" maxlength="100" size="25" required="true" requiredMessage="O Campo 'Nome' é obrigatório!" /> <p:outputLabel for="tipoNegocio" value="Tipo Negócio:" /> <p:selectOneMenu id="tipoNegocio" filter="true" value="#{categoriaProdutoBean.categoria.tipo_negocio}" converter="omnifaces.SelectItemsConverter" required="true" requiredMessage="Campo 'Tipo Negócio' obrigatório!"> <f:selectItem noSelectionOption="true" itemLabel="Selecione um 'Tipo Negócio'" itemValue="#{categoriaProdutoBean.negocios}" /> <f:selectItems value="#{categoriaProdutoBean.negocios}" var="negocio" itemLabel="#{negocio.id_tipo_negocio} - #{negocio.txt_tipo}" itemValue="#{negocio}" /> </p:selectOneMenu> <p:outputLabel for="categoriaPai" value="Categoria Pai:" /> <p:selectOneMenu id="categoriaPai" filter="true" value="#{categoriaProdutoBean.categoria}" converter="omnifaces.SelectItemsConverter"> <f:selectItem noSelectionOption="true" itemLabel="Selecione a 'Categoria Pai'" itemValue="#{categoriaProdutoBean.categorias}" /> <f:selectItems value="#{categoriaProdutoBean.categorias}" var="categoriaP" itemLabel="#{categoriaP.id_categoria} - #{categoriaP.txt_nome}" itemValue="#{categoriaP}" /> </p:selectOneMenu> <p:outputLabel for="ativo" value="Ativa:" /> <p:selectOneRadio id="ativo" value="#{categoriaProdutoBean.categoria.bool_ativo}"> <f:selectItem itemLabel="Ativa" itemValue="1" /> <f:selectItem itemLabel="Inativa" itemValue="0" /> </p:selectOneRadio> <p:outputLabel value="Observação:" /> <p:inputTextarea value="#{categoriaProdutoBean.categoria.txt_observacao}" /> </h:panelGrid> <h:panelGrid columns="2"> <p:commandButton value="Salvar" actionListener="#{categoriaProdutoBean.salvar}" update=":mensagem :formCadastro:painelCadastro :formListagem:dataTableListagem" /> <p:commandButton value="Fechar" oncomplete="PF('dialogo').hide()" /> </h:panelGrid> </h:form> </p:dialog>
a classe DAO:
package hagape.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.Order;
import org.hibernate.criterion.Restrictions;import br.com.drogaria.HibernateUtil;
public class GenericDAO {
private Class classe;@SuppressWarnings("unchecked") public GenericDAO() { this.classe = (Class<Entidade>) ((ParameterizedType) getClass().getGenericSuperclass()) .getActualTypeArguments()[0]; } public void salvar(Entidade entidade) { Session sessao = HibernateUtil.getFabricaDeSessoes().openSession(); sessao.clear(); 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(); } } public void merge(Entidade entidade) { Session sessao = HibernateUtil.getFabricaDeSessoes().openSession(); sessao.clear(); 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(); } } public void excluir(Entidade entidade) { Session sessao = HibernateUtil.getFabricaDeSessoes().openSession(); sessao.clear(); 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(); sessao.clear(); 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(); } } @SuppressWarnings("unchecked") public List<Entidade> listar() { Session sessao = HibernateUtil.getFabricaDeSessoes().openSession(); sessao.clear(); try { Criteria consulta = sessao.createCriteria(classe); List<Entidade> resultado = consulta.list(); return resultado; } catch (RuntimeException erro) { throw erro; } finally { sessao.close(); } } @SuppressWarnings("unchecked") public List<Entidade> listar(String campoOrdenacao) { Session sessao = HibernateUtil.getFabricaDeSessoes().openSession(); sessao.clear(); try { Criteria consulta = sessao.createCriteria(classe); consulta.addOrder(Order.asc(campoOrdenacao)); 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(); sessao.clear(); 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(); } }
}
o pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
br.com.hagape
Hagape
0.0.1-SNAPSHOT
war<!-- Codificação dos caracteres --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- Parâmetros de execução --> <build> <!-- Nome do projeto empacotado --> <finalName>Hagape</finalName> <!-- Plugins --> <plugins> <!-- Compilador --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <!-- Repositorios --> <repositories> <repository> <id>prime-repo</id> <name>PrimeFaces Maven Repository</name> <url>http://repository.primefaces.org</url> <layout>default</layout> </repository> </repositories> <!-- Dependencias --> <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.3.11.Final</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.36</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.faces</artifactId> <version>2.2.12</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>all-themes</artifactId> <version>1.0.10</version> </dependency> <dependency> <groupId>org.primefaces</groupId> <artifactId>primefaces</artifactId> <version>6.0</version> </dependency> <dependency> <groupId>org.omnifaces</groupId> <artifactId>omnifaces</artifactId> <version>1.11</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.enterprise</groupId> <artifactId>cdi-api</artifactId> <version>1.2</version> </dependency> </dependencies>
e o web.xml:
<?xml version="1.0" encoding="UTF-8"?>
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
Hagape
javax.faces.PROJECT_STAGE
Development
Faces Servlet
javax.faces.webapp.FacesServlet
1
Faces Servlet
*.xhtml
a classe bean:
package hagape.bean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;import javax.annotation.PostConstruct;
import javax.faces.application.Application;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;import org.omnifaces.util.Messages;
import hagape.dao.EstoqueDAO;
import hagape.dao.EstoqueProdutoDAO;
import hagape.dao.ProdutoDAO;
import hagape.domain.tb_estoque;
import hagape.domain.tb_estoque_produto;
import hagape.domain.tb_produto;@SuppressWarnings("serial")
@ViewScoped
@ManagedBean
public class EstoqueProdutoBean implements Serializable {
private tb_estoque_produto estoqueProduto;
private List estoques;
private List produtos;
private List estoqueProdutos;public tb_estoque_produto getEstoqueProduto() { return estoqueProduto; } public void setEstoqueProduto(tb_estoque_produto estoqueProduto) { this.estoqueProduto = estoqueProduto; } public List<tb_estoque> getEstoques() { return estoques; } public void setEstoques(List<tb_estoque> estoques) { this.estoques = estoques; } public List<tb_produto> getProdutos() { return produtos; } public void setProdutos(List<tb_produto> produtos) { this.produtos = produtos; } public List<tb_estoque_produto> getEstoqueProdutos() { return estoqueProdutos; } public void setEstoqueProdutos(List<tb_estoque_produto> estoqueProdutos) { this.estoqueProdutos = estoqueProdutos; } @PostConstruct public void listar() { try { estoqueProduto = new tb_estoque_produto(); ProdutoDAO produtoDAO = new ProdutoDAO(); produtos = produtoDAO.listar("txt_nome"); EstoqueDAO estoqueDAO = new EstoqueDAO(); estoques = estoqueDAO.listar(); EstoqueProdutoDAO estoqueProdutoDAO = new EstoqueProdutoDAO(); estoqueProdutos = estoqueProdutoDAO.listar(); FacesContext context = FacesContext.getCurrentInstance(); Application application = context.getApplication(); javax.faces.application.ViewHandler viewHandler = application.getViewHandler(); UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId()); context.setViewRoot(viewRoot); context.renderResponse(); } catch (RuntimeException e) { e.printStackTrace(); Messages.addGlobalError("Erro ao tentar carregar 'Lista'!"); } } public void refresh() { try { estoqueProduto = new tb_estoque_produto(); ProdutoDAO produtoDAO = new ProdutoDAO(); produtos = produtoDAO.listar("txt_nome"); EstoqueDAO estoqueDAO = new EstoqueDAO(); estoques = estoqueDAO.listar(); EstoqueProdutoDAO estoqueProdutoDAO = new EstoqueProdutoDAO(); estoqueProdutos = new ArrayList<>(); List<tb_estoque_produto> estoqueProdutos1 = estoqueProdutoDAO.listar(); estoqueProdutos = estoqueProdutos1; FacesContext context = FacesContext.getCurrentInstance(); Application application = context.getApplication(); javax.faces.application.ViewHandler viewHandler = application.getViewHandler(); UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId()); context.setViewRoot(viewRoot); context.renderResponse(); } catch (RuntimeException e) { e.printStackTrace(); Messages.addGlobalError("Erro ao tentar carregar 'Lista'!"); } }
}
Mensagens: 1
Participantes: 1