dúvida Calendar - salvando data atual no BD  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
andre_rjp
Thread.start()
[Avatar]

Membro desde: 21/10/2011 05:58:13
Mensagens: 33
Localização: Rio de Janeiro
Offline

Bom dia!

Pessoal to com um código aqui, que pega por um formulario a data de nascimento de determinado usuario, porém quando salva no meu banco de dados, está salvando com a data do dia e não a data que o usuário insere, poderiam me auxiliar e informar onde estou errando no código, desde já agradeço, coloquei aqui no java basico pois achei que não era um erro da Servlet que criei, segue os códigos:

método adiciona da Classe ContatoDAO.


aqui a Servlet:


Estou colocando a data: 02/04/1987 mas sempre salva no banco a data do dia atual.



abmpicoli
JavaTeenager

Membro desde: 27/07/2011 09:11:25
Mensagens: 164
Offline

Carinha, vê se o campo no banco de dados não está definido como Timestamp. Pelo que estou vendo, o seu campo no banco de dados deveria ser do tipo DATETIME, ou algo similar.
Não sei qual banco você está usando pra te passar mais detalhes, mas campo tipo TIMESTAMP normalmente significa enfiar a data corrente do banco em um insert.

This message was edited 1 time. Last update was at 30/01/2012 22:27:08


.x.
andre_rjp
Thread.start()
[Avatar]

Membro desde: 21/10/2011 05:58:13
Mensagens: 33
Localização: Rio de Janeiro
Offline

então amigo, eu to usando o PostgreSQL, e o campo está como date



michelorth_92
JavaEvangelist
[Avatar]

Membro desde: 11/10/2011 10:23:41
Mensagens: 328
Offline

stmt.setDate(6,new Date(contato.getDataNascimento().getTimeInMillis()));

voce esta setando nesta linha a data atual

faça só assim


stmt.setDate(contato.getDataNascimento());
abmpicoli
JavaTeenager

Membro desde: 27/07/2011 09:11:25
Mensagens: 164
Offline

Carinha, seu código do jeito que está funciona na questão de datas , porque testei algo similar.


E o resultado foi o esperado. Data no formato ano-mes-dia igual a data parseada.
Então, os suspeitos passaram a ser outros:

1) Será que o seu bean Contato.java não tá com alguma bobagem nos getters e setters?
2) Será que tem alguma trigger no banco?
3) Será que o create table da tabela tem alguma especificação de valor default que não está sendo usada?

Passa o create table da tabela pra gente ver...

This message was edited 1 time. Last update was at 31/01/2012 05:58:56


.x.
andre_rjp
Thread.start()
[Avatar]

Membro desde: 21/10/2011 05:58:13
Mensagens: 33
Localização: Rio de Janeiro
Offline

michelorth_92 wrote: stmt.setDate(6,new Date(contato.getDataNascimento().getTimeInMillis()));

voce esta setando nesta linha a data atual

faça só assim


stmt.setDate(contato.getDataNascimento());


Então deixa eu ver se entendi, no meu ContatoDAO



tem que ficar assim:


Mas se fizer isso nem deixa compilar, o Date ali é de java.sql.Date.



andre_rjp
Thread.start()
[Avatar]

Membro desde: 21/10/2011 05:58:13
Mensagens: 33
Localização: Rio de Janeiro
Offline

abmpicoli wrote:Carinha, seu código do jeito que está funciona na questão de datas , porque testei algo similar.


E o resultado foi o esperado. Data no formato ano-mes-dia igual a data parseada.
Então, os suspeitos passaram a ser outros:

1) Será que o seu bean Contato.java não tá com alguma bobagem nos getters e setters?
2) Será que tem alguma trigger no banco?
3) Será que o create table da tabela tem alguma especificação de valor default que não está sendo usada?

Passa o create table da tabela pra gente ver...


No banco já não saco muito... nem sei o que seria esse trigger que você mencionou, mas segue meu Contato.java e o create table da tabela:
os getters e setters deixei o lombok criar, mas o getDataNascimento retorna Calendar.


e aqui segue o create da tabela:



abmpicoli
JavaTeenager

Membro desde: 27/07/2011 09:11:25
Mensagens: 164
Offline

Carinha, experimenta tirar a diretiva do lombok, e crie os getters e setters "na unha" e vê o que dá. Essa biblioteca é experimental, tá ainda na versão 0.10, e pode muito bem estar com pau.
Triggers são uma coisa do capeta, que colocam em bancos de dados. Basicamente eles colocam algumas ações antes ou depois de inserts. Tipicamente são criados por DBAs com um comando do tipo "CREATE TRIGGER".

Ah, e mete um clean no projeto: esse lombok mexe com compilação, e pode ser que isso deixe o eclipse meio doido, com .class velhos.

This message was edited 3 times. Last update was at 31/01/2012 14:16:57


.x.
andre_rjp
Thread.start()
[Avatar]

Membro desde: 21/10/2011 05:58:13
Mensagens: 33
Localização: Rio de Janeiro
Offline

Poxa então eu coloquei o lombok justamente porque antes tinha getters e setters, e continuava apresentando a data do sistema operacional, vou retirar o lombok e adicionar os getters e setters pelo Eclipse e dou um clean no projeto.



abmpicoli
JavaTeenager

Membro desde: 27/07/2011 09:11:25
Mensagens: 164
Offline

Carinha, como você está verificando que a data do banco está como a data corrente? Por select no banco mesmo?

Porque já está num ponto em que não tou vendo solução nenhuma pelo que você me apresentou...

.x.
andre_rjp
Thread.start()
[Avatar]

Membro desde: 21/10/2011 05:58:13
Mensagens: 33
Localização: Rio de Janeiro
Offline

Então eu vejo pelo banco via select *from contatos;

ou pelo proprio PGAdmin que instalei para gerencia o postgreSQL.



ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Tópico movido para o fórum de persistência.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team