Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

java.time.LocalDate e HIBERNATE

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

1 resposta
solução!

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.