Campo da tabela não é atualizado pelo JPA

Boa noite. Vou colocaar abaixo a descrição do que estou usando para facillitar para quem puder me ajudar.

  • Tomcat 6
  • JPA (provedor TopLonk da oracle)
  • Banco de dados Mysql 5
  • Web Service com o Metro (GlassFish)

Criei uma aplicação utiizando um servlet para o meu web service, e no backend do web service eu utilizo o JPA para inserir um registro em uma tabela e atualizar um campo deste mesmo registro de uma tabela do meu banco de dados.

Eu utilizo uma outra aplicação Web para acessar os o meu banco de dados e gerar relatórios utilizando as tabelas do mesmo.

Ok, após esta explicação breve do cenário da minha aplicação aqui vai o meu problema.

Eu acesso o meu web service com um cliente, e ele grava um novo registro em minha tabela, e depois atualiza um campo de STATUS deste registro. Eu acesso o banco de dados pela linha de comando, ou utilizando o phpmyadmin, e o registro foi inserido com sucesso, mas o seu campo de STATUS não foi atualizado, mas quando eu acesso a minha aplicação web de relatórios o campo de STATUS do registro que o meu web service atualizou está atualizado como deveria estar, ou seja, o JPA (TopLink) está guardando em memória os dados do meu objeto que deveriam ser inseridos no banco de dados, e não está inserindo as minhas atualizações, mas como a minha aplicação web (relatórios) utiliza a mesma entidade JPA do meu web service ela consegue visualizar as atualizações mesmo que elas não tenham sido inseridas no abnco de dados ainda, pois está usando os objetos em memória que o JPA está armazenando.

Bom, já tentei utilizar o método flush() para forçar a gravação das informações no banco de dados e não funcionou.

Espero que alguém possa me ajudar com este problema.

Agradeço desde já, um abraço,

Bruno Alcântara.

commit ?

Aqui está o método que executa o update:

public void add(Order type) throws PersistenceException {
try {
manager.getTransaction().begin();
manager.merge(type);
manager.getTransaction().commit();
} catch (Exception e) {
try{manager.getTransaction().rollback();}catch(Exception x) {/**/}
String error = Convert.toString(MSG_ERROR_OPT, "add: ", type);
Logger.error(error, e);
throw new JPAException(error, e);
}

}

Experimente trocar: manager.merge(type);
por: manager.persist(type);