Spring-Hibernate, запущенный на удаленном сервере Tomcat, не создает таблицы.Перетащите и создайте работы, alo data.sql правильно подобран на localhost - PullRequest
0 голосов
/ 13 июня 2019

Не удается найти основную причину, по которой таблицы не создаются при одинаково одинаковых условиях.

Spring tool suite 4.x используется для сборки проекта / netbeans делает то же самое ....; проект представляет собой собранную maven коллекцию кода; и локальный, и удаленный серверы используют один и тот же mysql. сервер является Apache Tomcat 9 на Debian ...

Application.properties, который отлично работает на localhost:

spring.datasource.name=JAVAMAN2
spring.datasource.url=jdbc:mysql://localhost:3306/JAVAMAN2?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&createDatabaseIfNotExist=true
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=password
#spring.datasource.password=

spring.datasource.continue-on-error=true
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create
spring.datasource.initialization-mode=always

Здесь нет никакой разницы

spring.datasource.continue-on-error=true

Мой pom.xml выглядит так:

<!-- BASIC  -->

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

    <!-- SPRING MAIL  -->

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>

    <!-- THYMELEAF  -->

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

    <!-- MySQL Connector-J -->

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
      <groupId>javax.xml.bind</groupId>
      <artifactId>jaxb-api</artifactId>
    </dependency>

    <!-- JODA TIME  -->

    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
    </dependency>


    <!-- DEVTOOLS  -->

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
    </dependency>

    <!-- CONFIG PROCESOR  -->

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>

    <!-- Google GSON  -->

    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
    </dependency>

    <!-- SPRING SECURITY  -->

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-config</artifactId>
    </dependency>

    <!-- TOMCAT  -->

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
    </dependency>

В консоли не отображаются и не отображаются ошибки. Приложение просто запускается, но не создает таблицы.

Несколько примеров сущностей Пользователь

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "USERNAME", nullable = false)
    private String username;

    @Column(name = "PASSWORD", nullable = false)
    private String password;

    @Column(name = "ENABLED", nullable = false)
    private Integer enabled;

    @Column(name = "CLIENT_DB", nullable = false)
    private String client_db;

    @Column(name = "KOM_SIF", nullable = false)
    private String komSif;

    @Column(name = "ITC_KOM_SIF", nullable = false)
    private String itcKomSif;

    @Column(name = "UNIKEY", nullable = true)
    private String unikey;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
    private Set<Authorities> authorities = new HashSet<>();

Орган

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
//import javax.persistence.GeneratedValue;
import javax.persistence.Id;
//import javax.persistence.GenerationType;
//import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "authorities")
public class Authorities {
  @Id
  //@GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  @Column(name = "AUTHORITY")
  private String authority;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "id", insertable = false, updatable = false)
  private User user;

методы получения и установки намеренно опущены в этом сообщении ...

1 Ответ

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

Оказалось, что на удаленном сервере MariaDB, а не MySQL.

Мне пришлось заменить в pom.xml зависимость коннектора mysql на:

    <dependency>
      <groupId>org.mariadb.jdbc</groupId>
      <artifactId>mariadb-java-client</artifactId>
    </dependency>

Также изменил 3 строки на application.properties, имя класса драйвера, url и db dialect props имеютбыл изменен

spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3308/JAVAMAN2?createDatabaseIfNotExist=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDB53Dialect

Теперь он создает запрошенные таблицы так же, как и в MySQL

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