Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Que tabela é essa hibernate_sequence criada?

Depois de executar a classe de teste TesteRelacionamento, apareceu uma tabela nova no banco sem ter sido criado uma classe nova.

De onde é essa tabela? Que é a hibernate_sequence com o campo next_val, com o valor 8.

package br.com.alura.jpa.teste;

import java.math.BigDecimal;
import java.time.LocalDateTime;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import br.com.alura.jpa.modelo.Conta;

public class TesteRelacionamento {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("contas");
        EntityManager createEntityManager = entityManagerFactory.createEntityManager();

        Conta conta = new Conta();
        conta.setTitular("Rodrigo");
        conta.setAgencia(12345);
        conta.setNumero(654321);
        conta.setSaldo(200.00);

        Movimentacao movimentacao = new Movimentacao();
        movimentacao.setTipoMovimentacao(TipoMovimentacao.ENTRADA);
        movimentacao.setData(LocalDateTime.now());
        movimentacao.setDescricao("Aqui e agora");
        movimentacao.setValor(new BigDecimal(200.00));
        movimentacao.setConta(conta);

        createEntityManager.getTransaction().begin();
        createEntityManager.persist(conta);
        createEntityManager.persist(movimentacao);
        createEntityManager.getTransaction().commit();
        createEntityManager.close();

    }

}
2 respostas
solução!

A partir da versão 5.0 do Hibernate, quando o Generation Type é AUTO, o Hibernate usa o SequenceStyleGenerator, independentemente do banco de dados. No caso do MySql, o Hibernate emula uma sequência usando uma tabela e é por isso que você está vendo a tabela hibernate_sequence. O MySql não suporta nativamente o tipo sequence. Ou seja, se você usar strategy="AUTO" nas suas entidades JPA, o Hibernate irá gerar uma tabela chamada hibernate_sequence para fornecer o próximo número para a sequence do atributo ID da tabela.

Valeu Otávio. Muito obrigado pela explicação.