Pergunta

Problema resolvido: Obrigado rapazes, ver minha resposta abaixo

.

Eu tenho um site em execução no Tomcat 5.5 ligado a um banco de dados MySQL5 usando Hibernate3.

Um registro simplesmente se recusa a manter as alterações realizadas sobre ele. Se eu mudar o registro de programação, os valores voltar ao que eram anteriormente.

Se eu modificar manualmente o registro no banco de dados, os valores serão revertidos (aparentemente uma vez que o webapp acessa-los).

Eu tentei parar Tomcat e alterar os valores manualmente, em seguida, iniciar o Tomcat novamente. Verificando a base de dados, os valores permanecem mudou depois Tomcat iniciou o webapp, mas vai voltar novamente uma vez que eu carregar o site.

Eu também tentei apagar a pasta de trabalho Tomcat para o webapp e o arquivo de cache .ser.

Eu também tenho verificado o código para os valores que estão sendo revertidos para e não pode encontrá-los.

Eu só ter notado-lo neste um registro particular.

Editar: Acabei de ter um olhar para a saída de SQL do Hibernate usando hibernate.show_sql = true. Há uma consulta atualização registrado para a mesa a minha linha está. Alguém sabe como resolver o? para as colunas para valores reais?

Foi útil?

Solução

Você pode permitir temporariamente o log de consulta mysql e ver exatamente o que instrução SQL alterou o valor. Desde que você diz ela muda imediatamente após o servidor for iniciado, você deve ser capaz de descobrir a declaração muito rapidamente.

http://dev.mysql.com/doc /refman/5.0/en/query-log.html

Outras dicas

Para responder à sua pergunta:

Alguém sabe como resolver o? para as colunas para valores reais?

Você pode fazer isso com p6spy . Instruções sobre como configurar isso em um aplicativo de Primavera estão disponíveis aqui .

No entanto, eu acho que há um erro nestas instruções, o arquivo eles se referem como p6spy.log deve realmente ser p6spy.properties nome.

Está ficando perto de dia das bruxas, então você tem que esperar que este tipo de coisa (além disso, era apenas uma lua cheia), mas eu continuar procurando o culpado na aplicação web ... tem que estar lá. A valores casal Eu procuraria imediatamente para no código fonte webapp:

  • O id do registro que está sendo alterado.
  • O valor que está sendo escrito em o registro.

Boa sorte ... estes podem ser ursos reais para encontrar!

Isso cheira um pouco como um teste de caso de disparo no arranque que modifica a linha para o que ele espera que seja antes do teste.

Adicionar um disparador BEFORE UPDATE, verificação de ID da linha, gerar um erro SQL se ele corresponde a sua linha mágica. Em seguida, verifique o stacktrace gerado, a pé o código e localizar a peça que atualiza a linha.

Obrigado a todos pela ajuda. Todas as sugestões veio a calhar para segui-lo para baixo.

Eu consegui descobrir o que estava causando isso. design de banco de dados ruim, vários modelos de dados e Hibernate faz para algumas coisas desagradáveis. Outra mesa tinha o valor armazenado e que se prolonga classe foi uma classe de base com o mesmo valor.

É hora de olhar para fazer alguma normalização.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top