JPA TemporalType.Date dando data errada

Tenho uma classe que possui um campo de data que representa uma data "válida de" para um dado. É definido assim:

@Temporal( TemporalType.DATE )
private Date validFrom;

@All parece estar funcionando bem até o ponto em que retiro a data do banco de dados e a exibo. Se eu selecionar a data 18-Sep-2003 no front-end, salve-a quando eu fizer o check-in no banco de dados com a certeza de que é a data de espera (o banco de dados é o tipo de coluna MySQL 5.5.9 é DATE). No entanto, quando eu pego uma lista de registros, a data mostrada é 17 de setembro de 2003 - um dia ante

Se eu escolher uma data no início ou no final do ano, como 26 de março de 2003 ou 25 de dezembro de 2003, tudo está bem, então acho que isso tem algo a ver com o horário de verão, mas onde está o erro? Como o banco de dados parece conter a data correta, acho que deve ser quando o JPA está sendo convertido novamente em java.util.Date - é java.util.Date a melhor classe a ser usada para uma data? Eu já vi alguns exemplos em que as pessoas usam o Google Agenda, mas isso parece bastante pesado e não tenho certeza de como ele funcionará com um front end baseado em JSF.

questionAnswers(6)

yourAnswerToTheQuestion