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

java.sql.SQLSyntaxErrorException: Table 'loja.hibernate_sequence' doesn't exist

java.sql.SQLSyntaxErrorException: Table 'loja.hibernate_sequence' doesn't exist at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953) at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1003) at org.hibernate.id.enhanced.TableStructure.executeQuery(TableStructure.java:216) at org.hibernate.id.enhanced.TableStructure.access$300(TableStructure.java:46) at org.hibernate.id.enhanced.TableStructure$1$1.execute(TableStructure.java:138) at org.hibernate.id.enhanced.TableStructure$1$1.execute(TableStructure.java:126) at org.hibernate.jdbc.WorkExecutor.executeReturningWork(WorkExecutor.java:55) at org.hibernate.jdbc.AbstractReturningWork.accept(AbstractReturningWork.java:34) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:57) at org.hibernate.id.enhanced.TableStructure$1.getNextValue(TableStructure.java:125) at org.hibernate.id.enhanced.NoopOptimizer.generate(NoopOptimizer.java:40) at org.hibernate.id.enhanced.SequenceStyleGenerator.generate(SequenceStyleGenerator.java:523) at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:115) at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:185) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:128) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:55) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:102) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:720) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:706) at br.com.alura.loja.testes.CadastroDeProdutos.main(CadastroDeProdutos.java:23)

4 respostas

public class CadastroDeProdutos {

public static void main(String[] args) {

    Produto celular = new Produto();

    celular.setNome("Apple");
    celular.setDescricao("iPhone 11");
    celular.setPreco(new BigDecimal (3000));

    EntityManagerFactory factory = Persistence.createEntityManagerFactory("loja");
    EntityManager em = factory.createEntityManager();
    em.persist(celular);

@Entity @Table(name = "produtos") public class Produto {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Integer id;
private String nome;
private String descricao;
private BigDecimal preco;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getDescricao() {
    return descricao;
}

public void setDescricao(String descricao) {
    this.descricao = descricao;
}

public BigDecimal getPreco() {
    return preco;
}

public void setPreco(BigDecimal preco) {
    this.preco = preco;
}

}

<properties>

<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/loja" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="root" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect" />
<property name="hibernate.show sql" value="true" />
</properties>

solução!

Oi Talison,

Você colocou na entidade Produto:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Integer id;

Mas o MySQL não trabalha com sequence, então o problema ocorre, pois ele espera que tenha uma tabela distinta para as sequencias e não a encontra.

Altere para IDENTITY:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;