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

Conexão SQL Server - Não cria tabelas

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">

<persistence-unit name="financas">

                  <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

                     <class>br.com.alura.modelo.Conta</class>                     
                     <class>br.com.alura.modelo.Movimentacao</class>
                     <class>br.com.alura.modelo.Categoria</class>
                     <class>br.com.alura.modelo.Cliente </class>

                     <!--Propriedade do JDBC   -->

                     <properties>

                             <property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
                             <property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://localhost:1433;databaseName=bancoJava" />    

                             <property name="javax.persistence.jdbc.user" value="luciano" />
                                         <property name="javax.persistence.jdbc.password" value="123456" />


                         <!-- Configurações específicas do Hibernate -->

                             <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />

                             <property name="hibernate.hbm2ddl.auto" value="update" />
                             <property name="hibernate.show_sql" value="true" />
                             <property name="hibernate.format_sql" value="true" />



                     </properties>


</persistence-unit>
             </persistence>

Olá Aluleiros, instalei o SQL Server na minha máquina para treinar o que aprendi por aqui, porém ao tentar adicionar um Usuário no banco o meu Hibernate não consegue criar as tabelas no Banco.

`

3 respostas
Hibernate: 

    create table Categoria (
       id integer not null auto_increment,
        nome varchar(255),
        primary key (id)
    ) engine=InnoDB
abr 24, 2019 5:32:24 PM org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException
WARN: GenerationTarget encountered exception accepting command : Error executing DDL "
    create table Categoria (
       id integer not null auto_increment,
        nome varchar(255),
        primary key (id)
    ) engine=InnoDB" via JDBC Statement
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "
    create table Categoria (
       id integer not null auto_increment,
        nome varchar(255),
        primary key (id)
    ) engine=InnoDB" via JDBC Statement
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:559)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:504)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.createTable(AbstractSchemaMigrator.java:277)
    at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:71)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:207)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114)
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:184)
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:73)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:309)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:462)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:935)
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at br.com.alura.teste.TesteInserir.main(TesteInserir.java:21)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Sintaxe incorreta próxima a 'auto_increment'.
solução!

Olá Luciano!

O Hibernate usa uma tag chamada "Dialect" que em tradução direta significa "Dialeto". Ou seja, a forma que que nosso Hibernate irá conversar com o banco de dados.

Como existem diversos SGBD's o Hibernate possui vários dialetos como você pode ver aqui:

http://docs.jboss.org/hibernate/stable/annotations/api/org/hibernate/dialect/package-summary.html

Percebi que no seu código você está usando um dialeto para o MySQL e não para o SQL Developer.

Você teria duas opções:

1 - Instalar o MySQL e tentar novamente;

https://www.mysql.com/downloads/

2 - Trocar seu dialeto para o SQL Developer:

Nesse trecho:

 <!-- Configurações específicas do Hibernate -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />

Nesse parte:

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />

Para isso:

<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />

Testa e me fala se deu certo!

Aguardo seu retorno! ^^

Guilherme, Muito Obrigado por postar a resposta, deu certo. Dei uma lida no link, me ajudou muito.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software