简体   繁体   English

SpringBootApplication 无法从新表中获取数据

[英]SpringBootApplication Unable to get data from new table

I have a spring boot application that is working with all the old code.我有一个使用所有旧代码的 spring 启动应用程序。 I have added a new table that I am unable to get data from.我添加了一个无法从中获取数据的新表。 The rest of the app works just fine.该应用程序的其余部分工作正常。 I'm able to login and do things which means the application connects to the database, it's just the new table I can't get data from.我能够登录并做一些事情,这意味着应用程序连接到数据库,这只是我无法从中获取数据的新表。 I'm adding the code into existing classes (though I want to pull it out if I can get this working).我正在将代码添加到现有的类中(尽管我想将它拉出来,如果可以的话)。

I added the table manually.我手动添加了表格。 And added data to it.并向其添加数据。 I can query the table from the CLI and get results back.我可以从 CLI 查询表并返回结果。

CREATE TABLE Eop_Information (
   id bigint(20) NOT NULL AUTO_INCREMENT,
   employer_als_id varchar(255) NOT NULL,
   sftp_directory varchar(24),
   eop_filename_pattern varchar(16),
   PRIMARY KEY(id),
   FOREIGN KEY (employer_als_id) REFERENCES Employer(employer_als_id)
);

Main class主班

@SpringBootApplication(exclude = {
    HibernateJpaAutoConfiguration.class
})
@EnableScheduling
public class AlsApp extends SpringBootServletInitializer {

   public static void main(String[] args) {
      SpringApplication.run(AlsApp.class, args);
   }

   @Override
   protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
      return builder.sources(AlsApp.class);
   }
}

My HibernateConfig.我的 HibernateConfig。

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.als")
@EntityScan(basePackages = "com.als.bo")
public class HibernateConfig {
    private static final Logger log = LoggerFactory.getLogger(HibernateConfig.class);

    @Value("${db.driverClassName}")
    private String dbDriverClassName;
    @Value("${db.database}")
    private String dbDatabaseType;
    @Value("${db.url}")
    private String dbUrl;
    @Value("${db.username}")
    private String dbUsername;
    @Value("${db.password}")
    private String dbPassword;
    @Value("${db.hibernate.ddl-auto}")
    private String dbHibernateDdlAuto;
    @Value("${hibernate.show_sql}")
    private String dbShowSql;
    @Value("${hibernate.c3p0.min_size}")
    private String c3p0MinSize;
    @Value("${hibernate.c3p0.max_size}")
    private String c3p0MaxSize;
    @Value("${hibernate.c3p0.timeout}")
    private String c3p0Timeout;
    @Value("${hibernate.dialect}")
    private String dialect;
    @Value("${db.connection.pool_size}")
    private String connectionPoolSize;
    @Value("${hibernate.generate.statistics}")
    private String statistics;

    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        sessionFactory.setPackagesToScan("com.als");
        sessionFactory.setAnnotatedClasses(EopInformation.class);
        sessionFactory.setHibernateProperties(hibernateProperties());

        return sessionFactory;
    }

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(dbDriverClassName);
        dataSource.setUrl(dbUrl);
        dataSource.setUsername(dbUsername);
        dataSource.setPassword(dbPassword);

        log.info("Datasource created. {}", dataSource.getUrl());

        return dataSource;
    }

    @Bean
    public PlatformTransactionManager hibernateTransactionManager() {
        HibernateTransactionManager transactionManager = new HibernateTransactionManager();
        transactionManager.setSessionFactory(sessionFactory().getObject());
        return transactionManager;
    }

    private Properties hibernateProperties() {
        Properties hibernateProperties = new Properties();
        hibernateProperties.setProperty("hibernate.hbm2ddl.auto", dbHibernateDdlAuto);
        hibernateProperties.setProperty("hibernate.show_sql", dbShowSql);
        hibernateProperties.setProperty("spring.jpa.database", dbDatabaseType);
        hibernateProperties.setProperty("hibernate.dialect", dialect);
        hibernateProperties.setProperty("connection.pool_size", connectionPoolSize);
        hibernateProperties.setProperty("hibernate.dialect.storage_engine", "innodb");
        hibernateProperties.setProperty("hibernate.generate_statistics", statistics);
        hibernateProperties.setProperty(C3P0_TIMEOUT, c3p0Timeout);
        hibernateProperties.setProperty(C3P0_MIN_SIZE, c3p0MinSize);
        hibernateProperties.setProperty(C3P0_MAX_SIZE, c3p0MaxSize);

        return hibernateProperties;
    }
}

EopInformation class EopInformation 类

package com.als.bo;
// imports omitted
@Entity(name = "EopInformation")
@Table(name = "Eop_Information")
@NamedQueries(value = {
    @NamedQuery(name = "EopInformation.findAll", query = "SELECT e FROM EopInformation e")
})
public class EopInformation {

   @Id
   @GeneratedValue(strategy= GenerationType.AUTO)
   private long id;
   @OneToOne
   @JoinColumn(name = "employer_als_id")
   private Employer employer;
   @Column(name = "sftp_directory")
   private String sftpDirectory;
   @Column(name = "eop_filename_pattern")
   private String eopFilenamePattern;

   // Getters and Setters omitted
}

Service class服务类

@Service
@Transactional
public class UserServiceImpl implements UserService {
    @Autowired
    public UserServiceImpl(Userdao userdao, S3FileService fileservice) {
       this.userdao = userdao;
       this.fileService = fileservice;
    }

    @Override
    public void process() {
       logger.info("Begin processing EOP Files.");
       long startTime = System.currentTimeMillis();
       try {
           List<EopInformation> eopSftpList = userdao.getEOPFilenamePatterns();
           logger.info("Eop Information size: " + eopSftpList.size());
       
       // Code omitted

Dao class.道课。 I added the two methods to see if one would work but neither are getting any results.我添加了这两种方法,看看一种方法是否可行,但都没有得到任何结果。

@Repository
public class UserdaoImpl implements Userdao {

    @Autowired
    public UserdaoImpl(SessionFactory sessionFactory, DataSource dataSource) {
        this.sessionFactory = sessionFactory;
        this.dataSource = dataSource;
    }

    public Session getCurrentSession() {
        return sessionFactory.getCurrentSession();
    }
    
    @Override
    public List<EopInformation> getEOPFilenamePatterns() {
        try {
            logger.info("Begin");
            List<EopInformation> eopInformationListH = new ArrayList<>();

            for (int i = 0; i < 1; i++) {
                eopInformationListH = hibernateQuery();
            }
            logger.info("Hibernate result size: " + eopInformationListH.size());

            List<EopInformation> eopInformationList = new ArrayList<>();
            eopInformationList = datasourceQuery();
            logger.info("Datasource result size: " + eopInformationList.size());
            return eopInformationList;
        } catch (Exception e) {
            logger.error("Exception getting SFTP EOP data . {}", e.getMessage(), e);
            return new ArrayList<>(0);
        }
    }

    private List<EopInformation> hibernateQuery() {
        try {
            Session session = getCurrentSession();
            session.clear();
            logger.info("Begin hibernate query userdao");
            String query = "SELECT e FROM EopInformation e";

            Query<EopInformation> q = session.createQuery(query, EopInformation.class);
            List<EopInformation> results = q.list();
            return results;

        } catch (Exception e) {
            logger.error("Exception in Hibernate Query. {}", e.getMessage(), e);
            return new ArrayList<>(0);
        }
    }

    private List<EopInformation> datasourceQuery() {
        logger.info("Begin datasource query userdao");
        String query = "SELECT e.eop_filename_pattern, e.sftp_directory FROM Eop_Information e";
        try (Connection connection = dataSource.getConnection();
             java.sql.PreparedStatement statement = connection.prepareStatement(query);
             ResultSet rs = statement.executeQuery()) {

            List<EopInformation> eopInformationList = new ArrayList<>();

            while (rs.next()) {
                logger.info("Looping");
                String filename = rs.getString("eop_filename_pattern");
                String directory = rs.getString("sftp_directory");
                EopInformation eop = new EopInformation();
                eop.setEopFilenamePattern(filename);
                eop.setSftpDirectory(directory);
                eopInformationList.add(eop);
            }
            return eopInformationList;
        } catch (Exception e) {
            logger.error("Exception getting Eop Information. {}", e.getMessage(), e);
            return new ArrayList<>(0);
        }
    }
}

pom绒球

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.als</groupId>
    <artifactId>ALS</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>My Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <org.springframework-version>5.2.5.RELEASE</org.springframework-version>
        <spring.security.version>3.2.1.RELEASE</spring.security.version>
        <org.aspectj-version>1.6.10</org.aspectj-version>
        <org.slf4j-version>1.7.30</org.slf4j-version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-bom</artifactId>
                <version>1.11.860</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>s3control</artifactId>
            <version>2.14.17</version>
        </dependency>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>auth</artifactId>
            <version>2.14.17</version>
        </dependency>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>s3</artifactId>
            <version>2.14.17</version>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.6</version>
        </dependency>
        <dependency>
            <groupId>org.modelmapper</groupId>
            <artifactId>modelmapper</artifactId>
            <version>2.3.2</version>
        </dependency>

        <dependency>
            <groupId>com.googlecode</groupId>
            <artifactId>google-api-translate-java</artifactId>
            <version>0.92</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.10</version>
        </dependency>
        <dependency>
            <groupId>com.mandrillapp.wrapper.lutung</groupId>
            <artifactId>lutung</artifactId>
            <version>0.0.7</version>
        </dependency>
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.2.1</version>
        </dependency>

        <dependency>
            <groupId>com.opencsv</groupId>
            <artifactId>opencsv</artifactId>
            <version>4.0</version>
        </dependency>

        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.3</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.4</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.0</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.9</version>
        </dependency>

        <dependency>
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
            <version>2.6.12</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-dbcp2</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.19</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.0.1-FINAL</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-dbcp</artifactId>
            <version>9.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-servlet-api</artifactId>
            <version>7.0.21</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${org.aspectj-version}</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.10</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-c3p0</artifactId>
            <version>5.4.14.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.4.14.Final</version>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20090211</version>
        </dependency>
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.8.3</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${org.slf4j-version}</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${org.springframework-version}</version>
            <exclusions>
                <!-- Exclude Commons Logging in favor of SLF4j -->
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${org.springframework-version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>2.3.4.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>javax.annotation</groupId>
            <artifactId>javax.annotation-api</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.1</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>MyApp</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <webappDirectory>target</webappDirectory>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>

    </build>
</project>

My logs look like我的日志看起来像

dao.UserdaoImpl - Begin
dao.UserdaoImpl - Begin hibernate query userdao
dao.UserdaoImpl - Hibernate result size: 0
dao.UserdaoImpl - Begin datasource query userdao
dao.UserdaoImpl - Datasource result size: 0
service.UserServiceImpl - Eop Information size: 0

I found the issue.我发现了这个问题。 It was user error.这是用户错误。 there's nothing wrong with the code.代码没有任何问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM