Приложение Spring Boot не получает данные из базы данных после развертывания на tomcat - PullRequest
0 голосов
/ 04 февраля 2019

Я создал простое приложение Spring Boot, которое запрашивает базу данных SQL Azure.Я могу запустить все локально, но после развертывания в Tomcat все мои транзакции с БД становятся пустыми или пустыми.

Когда я просматриваю логи, я вижу сгенерированный SQL-запрос, и он выглядит правильно.Я даже запустил сгенерированный SQL-запрос в VSCode, и он возвращает правильную информацию.

Приложение подключается к БД, но по какой-то причине не может получить никаких данных.Я думаю, что это проблема зависимости, но я все выгляжу правильно, насколько мне известно.

Я использую версию Tomcat - 8.5

builde.gradle

buildscript {
    ext {
        springBootVersion = '2.1.2.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'com.something'
version = '1.1'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

war {
    manifest {
        attributes 'Main-Class': 'com.something.application'
    }
}

ext {
    set('azureVersion', '2.0.8')
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-data-rest'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'com.microsoft.azure:azure-keyvault-secrets-spring-boot-starter'
    implementation 'com.microsoft.sqlserver:mssql-jdbc:7.0.0.jre8'
    implementation group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: '2.1.2.RELEASE'
    implementation group: 'com.microsoft.azure', name: 'applicationinsights-web', version: '2.+'
    implementation group: 'com.microsoft.azure', name: 'applicationinsights-core', version: '2.+'
    implementation 'com.microsoft.azure:azure-spring-boot-starter'
    implementation 'org.projectlombok:lombok:1.18.4'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.security:spring-security-test'
}

dependencyManagement {
    imports {
        mavenBom "com.microsoft.azure:azure-spring-boot-bom:${azureVersion}"
    }
}

CustomerEntity.java

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import lombok.Data;

@Entity
@Data
public class Customer {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int c_id;
    private String username;
    private String first_name;
    private String last_name;
}

CustomerRepository.java

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import com.data.Customer;

@Repository
public interface CustomerRepository extends JpaRepository<Customer, Integer> {

    @Query("SELECT u FROM Customer u WHERE u.c_id = ?1")
    Customer getCustomer(int c_id);
}

Конфигурация источника данных

@Bean
public DataSource dataSource() {
    return DataSourceBuilder.create().username(username).password(AzureSQLPwd).url(url)
            .driverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver").build();
}

application.properties

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServerDialect
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
logging.level.org.hibernate.SQL=DEBUG
spring.jpa.hibernate.ddl-auto=update
logging.level.org.springframework.web=DEBUG
...