Я создал простое приложение 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