Salvando data incorreta no MySQL + Primefaces

A data está sendo salva de forma incorreta, por exemplo, no meu inputMask eu digito 04/03/1980, mas na hora de exibir a data que foi salva, ele exibe 03/03/1980
Não é só na exibição, na verdade, olhando no banco mesmo, a data foi salva incorretamente.

Alguém já teve um problema semelhante? Como resolver?

Meu inputMask:

<p:inputMask value="#{eleitor.nascimento}" mask="99/99/9999" />

No Bean Eleitor, o atributo é nascimento, do tipo java.util.Date, com seus getter e setter normais.

O DAO:

...
ps.setDate(3, new java.sql.Date(eleitor.getNascimento().getTime()));
...

É salvo, porém incorretamente. Como corrigir isso?
Desde já, agradeço qualquer ajuda!

Cara tenta trocar seu p:inputMask pelo p:calendar… já tentei algo assim e tive esse mesmo problema, hoje eu só uso o p:calendar

O problema é que eu vou perder a máscara para a data, não?

Além disso, creio que o p:calendar é útil para datas atuais, não para datas mais antigas, tipo a data de nascimento dos usuários. Correto?

Fiz mais testes, e o que acontece é que ele sempre salva um dia a menos do que foi digitado.
EX: DIGITADO 03/05/1980
Ele salva: 02/05/1980

Alguém já teve um erro semelhante? E como se resolve isso?

Obrigado.

Ja passei por isso.
Da somente coloquei o locale=“pt_BR” e pattern=“dd/MM/yyyy”

<p:calendar id="data" value="#{ }"
						locale="pt_BR" pattern="dd/MM/yyyy" />

Mudei locale para pt_BR e o problema persiste…

Alguma sugestão amigos?

Como eu uso o inputMask

<p:inputMask id="date" value="#{}"
	mask="99/99/9999"
	validatorMessage="Data com formato inválido!"
	converterMessage="Data com formato inválido!"
	size="10">
	<f:convertDateTime pattern="dd/MM/yyyy"
							timeZone="America/Sao_Paulo" />
</p:inputMask>

Edson, o value="#{}" não é atribuído a nenhum bean?

javadalberto, o value vai ser seu #{eleitor.nascimento}

o value e o seu #{eleitor.nascimento}, conforme andii.brunetta

eu segui isso mais na hora de salvar no meu banco da erro no formato,

sera que pq eu coloco minha data como string na minha classe…

estou usando o p calendar

tenho que converte para tipo date ou eu mudo para tipo date em vez de string que da certo…

valewww

obj_sql.setString(5, obj_clientes.getDataalteracao());

<h:outputLabel for ="dataalteracao" value = "Data Alteração:*"/> <p:calendar id="dataalteracao" value="#{clientesBean.clientes.dataalteracao}" required="true" locale="pt_BR" pattern="dd/MM/yyyy" title="Campo obrigatório. Informe a data de alteração " label="Data de Alteração"> <p:tooltip for="dataalteracao" showEvent="focus" hideEvent="blur"/> </p:calendar>

Boa noite.

Você pode usar assim na sua classe.

@Temporal(TemporalType.DATE)
@Column(name = "data_alteracao")
private Date dataAlteracao;

Com isso trabalha somente com date.

amigo nem sei onde coloco isso…

o problema tah sendo quando vou passar a data a ser gravada no banco ou alterada…
tipo na minnha classe eu coloco a variavel como date


private Date dataalteracao;

	public  Date getDataalteracao() {
		return dataalteracao;
	}

	public void setDataalteracao(java.sql.Date date) {
		this.dataalteracao = dataalteracao;
	}

ai quando vou passar pro banco gravar:

[code]String comando_sql = “insert into tbl_clientes (dataalteracao) values (?)”;

obj_sql.setDate(1, obj_clientes.getDataalteracao());//oproblema é nesse set date[/code]

consegui era uns importa errados…
mais ainda não salva no banco…
o botão não funciona.
hauhauah