Boa noite, Pessoal.
Gostaria de saber se a anotação @Temporal do hibernate já funciona com a nova api de datas do java, se funcionar alguém posta um exemplo ai por gentileza :)
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa noite, Pessoal.
Gostaria de saber se a anotação @Temporal do hibernate já funciona com a nova api de datas do java, se funcionar alguém posta um exemplo ai por gentileza :)
Joao, boa noite tudo bem ?
Eu fiz alguns testes para registrar data usando localdate, e o @Temporal nao esta funcionando ainda =/, quando uso ele estoura a seguinte excessão (
Caused by: org.hibernate.AnnotationException: @Temporal should only be set on a java.util.Date or java.util.Calendar property: br.com.caelum.financas.modelo.Movimentacao.data)
Se voce utilizar o local date sem a anotacao (@temporal) o hibernate reconhece normalmente a data informada.
Abaixo esta o exemplo que utilizei:
Classe movimentacao:
private LocalDate data;
//gettter and setter
Classe main:
public static void main(String[] args) {
Categoria categoria1 = new Categoria("Viagem");
Categoria categoria2 = new Categoria("Negocios");
Conta conta = new Conta();
conta.setId(3);
LocalDate localDate = LocalDate.of(2017, Month.FEBRUARY, 1);
Movimentacao movimentacao1 = new Movimentacao();
movimentacao1.setData(localDate); // hoje
movimentacao1.setDescricao("Viagem a Pato Branco");
movimentacao1.setTipoMovimentacao(TipoMovimentacao.Entrada);
movimentacao1.setValor(new BigDecimal(100.0));
movimentacao1.setCategorias(Arrays.asList(categoria1, categoria2));
movimentacao1.setConta(conta);
Movimentacao movimentacao2 = new Movimentacao();
LocalDate localDate1 = LocalDate.of(2017, Month.AUGUST, 5);
movimentacao2.setData(localDate1);
movimentacao2.setDescricao("Viagem ao RJ");
movimentacao2.setTipoMovimentacao(TipoMovimentacao.SAIDA);
movimentacao2.setValor(new BigDecimal(745.31));
movimentacao2.setCategorias(Arrays.asList(categoria1, categoria2));
movimentacao2.setConta(conta);
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
em.persist(categoria1); // Agora a 'categoria1' Managed
em.persist(categoria2); // Agora a 'categoria2' Managed
em.persist(movimentacao1);
em.persist(movimentacao2);
em.getTransaction().commit();
em.close();
System.out.println(movimentacao1);
}
Caso tenha duvidas de como utilizar o local date, estou deixando um link do pessoal da DevDojo, eles explicam a utilizacao do localDate.
As aulas iniciam do numero 203 ate 208
http://www.devdojo.com.br/aula?playlistId=PL62G310vn6nHrMr1tFLNOYP_c73m6nAzL
Espero ter ajudado \o/
Abraços.