Aplicacao desktop atualiza o banco mas aplicacao web nao reconhece alterações ( vice-versa )

6 respostas
ale0790

Galera, então tenho 2 aplicações uma web e outra desktop, a desktop faz alteracoes no banco porem a aplicação web nao reconheçe de imediato, somente após eu reiniciar a aplicação, o que poderia estar aconteçendo??? segue o metodo que eu chamo pra atualizar os dados .

Metodo que atualiza

public void buscaPostsNovos(){
         Session session = HibernateUtil.openSession();
         session.flush();
        postDao = new PostDao(session, Post.class);
        System.out.println("ATUALIZO");
        if(quantidadePost==null){
               opcao2=false;
            listPosts = (ArrayList<Post>) postDao.obtenhaPostsNovos(30);
        }else{
            opcao2=true;
          listPosts = (ArrayList<Post>) postDao.obtenhaPostsNovos(quantidadePost);
        }
   }

PostDao

public List<Post> obtenhaPostsNovos(Integer quantidadePost) {
        Query q;
        q = session.createQuery("select u from Post u order by u.dataPost desc limit "+quantidadePost);
        q.setMaxResults(quantidadePost);
        
        return q.list();
    }

Alguem ja passou por isso, se puder ajudar, fico grato.

Vlw
:P

6 Respostas

maior_abandonado

vc esta comitando direitinho a alteração nelas? tem certeza que não está pegando od cache do hibernate?

ale0790

Então, esta comitando certo, pois os dados são gravados no banco, se eu reiniciar a aplicação web, ela reconheçe as alterações, como sei se ele pega do cache do hibernate?? ou não??

Vlw

maior_abandonado

vocÊ pode dar um clear na sessão antes de executar, assim limparia o cache do hibernate que estava disconfiado dele pegar estes objetos no cache e não se atualiza sozinho que teve mudança no banco (o que me parece muuuito estranho, posta seu arquivo de configuração do hibernate)…

quais são as chances de você não estar vendo o resultado atualizado por que está limitando a quantidade de resultados e o atualizado ficou de fora pela quantidade? por exemplo, se você pegou 30 resultados e o atualizado ser o 31…

outra coisa, esse limit ai que você colocou na query, coloque só ele e tire o setMaxResult da linha seguinte ou tire ele e deixe só o setMaxResult na linha seguinte (mais indicado).

ale0790

maior_abandonado:
vocÊ pode dar um clear na sessão antes de executar, assim limparia o cache do hibernate que estava disconfiado dele pegar estes objetos no cache e não se atualiza sozinho que teve mudança no banco (o que me parece muuuito estranho, posta seu arquivo de configuração do hibernate)…

quais são as chances de você não estar vendo o resultado atualizado por que está limitando a quantidade de resultados e o atualizado ficou de fora pela quantidade? por exemplo, se você pegou 30 resultados e o atualizado ser o 31…

outra coisa, esse limit ai que você colocou na query, coloque só ele e tire o setMaxResult da linha seguinte ou tire ele e deixe só o setMaxResult na linha seguinte (mais indicado).

então, acho que não há chance de eu não estar vendo o resultado, pois eu ordeno pela data de inserção no banco, segue a config do hibernate. Irei testar sem o setMaxResult e ja ja posto o resultado.

<?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/guerapa</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">***1</property> <mapping class="modelo.entidade.Erro"/> <mapping class="modelo.entidade.Links"/> <mapping class="modelo.entidade.Post"/> <mapping class="modelo.entidade.Site"/> </session-factory> </hibernate-configuration>

Vlw por enquanto :stuck_out_tongue:

maior_abandonado

é estranho mesmo… me parece que pelo que vocÊ descreveu não deveria dar esse erro…

ale0790

então amigo fiz alguns testes e obtive os seguintes resultados;

se tiro o setMaxResults, deixando somente o limit, por mais que mude a query para limit 0, quantidade;

ele me retorna todos os dados do banco.

tirei o limit, e deixei somente o setMaxResults, dai sim traz a quantia correta, porem o problema continua, atualizo o banco dou f5 na pagina, ou executo o metodo de busca novamente, mas ele nao retorna os novos dados. Se reiniciar a aplicacao web, dai traz os dados novos…

Alguem mais que possa me ajudar???

Obrigado porenquanto maior_abandonado

Abraço

Criado 8 de julho de 2011
Ultima resposta 8 de jul. de 2011
Respostas 6
Participantes 2