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 :)
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.