Hibernate не создает таблицу автоматически - PullRequest
0 голосов
/ 16 июня 2019

pom.xml:

<dependencies>
    ...
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>4.2.2.RELEASE</version>
</dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.0.3.Final</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
</dependencies>

сущность:

@Entity
@Table(name = "person")
public class Person {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int personId;

@Column(name = "first_name")
private String firstName;
}

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/socialmedia? 
allowPublicKeyRetrieval=true&useSSL=false
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver.class=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.properties.hibernate.default_schema = socialmedia
spring.jpa.hibernate.ddl-auto = create-drop
spring.jpa.show-sql = true

Hibernate не создает таблицы автоматически, я установил свойства и классы сущностей, а зависимости все еще остаются пустыми после запуска кода. Сообщения об ошибках не отображаются.

1 Ответ

0 голосов
/ 16 июня 2019

Ваша стратегия:

spring.jpa.hibernate.ddl-auto = create-drop

Это означает, что Hibernate создает таблицы и после запуска программы таблицы удаляются. Вот почему вы не видите никаких таблиц.

Вы должны использовать create (только создает таблицы) или update (также изменяет таблицы):

 spring.jpa.hibernate.ddl-auto = update

Тогда я не вижу стартовый проект JPA в вашем pom.xml, но у вас есть зависимости Hibernate, которые не нужны. Ваш pom.xml должен выглядеть так:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
</dependencies>

spring-boot-starter-data-jpa автоматически настроит Hibernate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...