Olá pessoal, boa noite !
Estou enfrentando um problema em minha aplicação (TCC), tenho uma classe Pessoa que possui um atributo dataNascimento tipo Date, que é mapeado pelo Hibernate para um banco Mysql.
Tenho um formulário que recebe os dados e manda para a Dao realizar a persistencia, porém, o campo dataNascimento (input) sempre é setado como vazio, mesmo eu digitando algum valor sobre o mesmo ele volta como null.
Estou realizando este projeto através do vRaptor. Abaixo vou postar minhas 3 classes e meu formulário que atuam na função de salvar este meu objeto !
[code]@Entity
public class Pessoa implements Serializable {
@Id
@GeneratedValue
private int id;
private String nome;
@CPF
private String cpf;
@Temporal(TemporalType.DATE)
@Column(name = "data_nascimento")
@NotNull(message = "Campo data não pode ser nulo !")
private Date dataNascimento;
private String profissao;
@Email(message = "E-mail inválido, insira um e-mail válido para prosseguir o cadastro.")
@Column(name = "email_acesso")
private String email;
private String senha;
private String perfil;
@OneToMany(mappedBy = "pessoa")
@Cascade(CascadeType.ALL)
private List<Telefone> telefones;
@OneToMany(mappedBy = "pessoa")
private List<Imovel> imoveis;
@OneToMany(mappedBy = "pessoa")
private List<Interesses> interesses;
@OneToMany(mappedBy = "pessoa")
private List<Contrato> contratos;
//getters e setters
[/code]
[code]@Component
public class PessoaDao {
private Session sessao;
public PessoaDao(Session sessao) {
this.sessao = sessao;
}
public void salvar(Pessoa pessoa) {
try {
Transaction tr = this.sessao.beginTransaction();
this.sessao.save(pessoa);
tr.commit();
} catch (Exception e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
}
public Pessoa buscar(int id) {
return (Pessoa) sessao.load(Pessoa.class, id);
}
public List<Pessoa> listar() {
return sessao.createCriteria(Pessoa.class).list();
}
public void atualizar(Pessoa pessoa) {
Transaction tr = sessao.beginTransaction();
sessao.update(pessoa);
tr.commit();
}[/code]
[code]@Resource
public class PessoasController {
private PessoaDao dao;
private Result result;
private Validator validator;
public PessoasController(PessoaDao dao, Result result, Validator validator) {
this.dao = dao;
this.result = result;
this.validator = validator;
}
public void formulario() {
}
public void salvar(Pessoa pessoa) {
// SimpleDateFormat formato = new SimpleDateFormat(“yyyy-MM-dd”);
// formato.format(pessoa.getDataNascimento());
// Date data = new SimpleDateFormat(“yyyy-MM-dd”).parse(“1991-10-12”);
// pessoa.setDataNascimento(data);
// System.out.println("------> pessoa.data:" + pessoa.getDataNascimento());
try {
validator.validate(pessoa);
validator.onErrorUsePageOf(PessoasController.class).formulario();
dao.salvar(pessoa);
result.redirectTo(PessoasController.class).lista();
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}[/code]
<label for="dataNascimento">Data Nascimento:</label>
<input id="dataNascimento" type="date" name="pessoa.dataNascimento"/>
Não sei ao certo, mas creio que possa ser algo errado no meu formulário, o modo como trabalho com o input talvez, ou esteja faltando algo para complementar o envio deste valor.
Agradeço a atenção de todos desde já, e peço com que me ajudem, por favor ! Obrigado