2017-07-28 54 views
0

我对可能导致此问题的原因感到不知所措。基本上我有一个连接到托管的mongo数据库的java webapp。我使用一个看起来像这样的新存储库向应用程序添加了一个新集合。MongoDB一些数据没有加载到java tomcat应用程序

public interface ContractRepository extends PagingAndSortingRepository<Contract, String> { 
public Contract findByNameIgnoreCase(String name); 
public List<Contract> findByOwnerCompany(Company c); 
} 

一切工作正常的数据被添加到数据库,并被加载到应用程序。然后,我们推出了一个新版本,它不再从数据库中提取数据,但数据库中没有数据丢失。我手动添加了新记录,并且它们显示正常。从那以后,我们手中又添加了所有记录,并且直到另一次更新才正常工作。同样的问题。

POM:

http://maven.apache.org/maven-v4_0_0.xsd“> net.company.com 申请人跟踪系统 1.0.0

<modelVersion>4.0.0</modelVersion> 
<groupId>net.company.com</groupId> 
<artifactId>ats-web</artifactId> 
<packaging>war</packaging> 
<version>1.0.0-BUILD-SNAPSHOT</version> 
<properties> 
    <org.slf4j-version>1.7.7</org.slf4j-version> 
    <java-version>1.8</java-version> 
    <debug>true</debug> 
</properties> 
<dependencyManagement> 
    <dependencies> 
     <!--   <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-framework-bom</artifactId> 
      <version>4.0.6.RELEASE</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency>--> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-parent</artifactId> 
      <version>1.2.2.RELEASE</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 
<dependencies> 
    <dependency> 
     <groupId>net.acesinc.ats</groupId> 
     <artifactId>ats-model</artifactId> 
     <version>1.0.0-BUILD-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>net.company.com</groupId> 
     <artifactId>ats-resume-parser</artifactId> 
     <version>1.0.0</version> 
    </dependency> 
    <!-- Spring --> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <exclusions> 
      <!-- exclude their default logging logback so we can use log4j --> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-tomcat</artifactId> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-spring-service-connector</artifactId> 
     <version>1.0.0.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-cloudfoundry-connector</artifactId> 
     <version>1.0.0.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>com.googlecode.json-simple</groupId> 
     <artifactId>json-simple</artifactId> 
     <version>1.1</version> 
    </dependency> 

    <!-- include the log4j logger --> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-log4j</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-websocket</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-messaging</artifactId> 
    </dependency> 

    <!-- Spring Data --> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-commons</artifactId> 
     <version>1.9.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-mongodb</artifactId> 
     <version>1.6.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>com.mysema.querydsl</groupId> 
     <artifactId>querydsl-mongodb</artifactId> 
     <version>3.5.1</version> 
    </dependency> 

    <!-- Security --> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-core</artifactId> 
     <version>4.0.0.RELEASE</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.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>4.0.0.RELEASE</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-test</artifactId> 
     <version>4.0.0.RELEASE</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.mockito</groupId> 
     <artifactId>mockito-all</artifactId> 
     <version>1.9.5</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-taglibs</artifactId> 
     <version>4.0.0.RELEASE</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.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>4.0.0.RELEASE</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.security</groupId> 
     <artifactId>spring-security-crypto</artifactId> 
     <version>4.0.0.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.thymeleaf</groupId> 
     <artifactId>thymeleaf-spring4</artifactId> 
     <version>2.1.3.RELEASE</version> 
    </dependency> 
    <!-- Servlet --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</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.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 

    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-client</artifactId> 
     <version>1.8-ea02</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.ws.rs</groupId> 
     <artifactId>jsr311-api</artifactId> 
     <version>1.1.1</version> 
     <scope>compile</scope> 
    </dependency> 

    <!-- Apache Commons file upload --> 
    <dependency> 
     <groupId>commons-fileupload</groupId> 
     <artifactId>commons-fileupload</artifactId> 
     <version>1.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpclient</artifactId> 
     <version>4.3.5</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.10</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpmime</artifactId> 
     <version>4.3.5</version> 
    </dependency> 

    <!-- Apache Commons IO --> 
    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>2.4</version> 
    </dependency> 
</dependencies> 
<repositories> 
    <!-- These are set in the settings.xml to our nexus repo --> 
</repositories> 
<pluginRepositories> 
    <!-- These are set in the settings.xml to our nexus repo --> 
</pluginRepositories> 
<build> 
    <finalName>${project.artifactId}</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>${java-version}</source> 
       <target>${java-version}</target> 
      </configuration> 
     </plugin> 
     <!--   <plugin> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>jetty-maven-plugin</artifactId> 
      <version>9.2.1.v20140609</version> 
      <configuration> 
       <systemPropertiesFile>${project.basedir}/src/main/resources/jetty/jetty.properties</systemPropertiesFile> 
       <jettyXml>${project.basedir}/src/main/resources/jetty/jetty.xml,${project.basedir}/src/main/resources/jetty/jetty-http.xml,${project.basedir}/src/main/resources/jetty/jetty-ssl.xml,${project.basedir}/src/main/resources/jetty/jetty-https.xml</jettyXml> 
       <jettyXml>${project.basedir}/src/main/resources/jetty/jetty.xml,${project.basedir}/src/main/resources/jetty/jetty-http.xml</jettyXml> 
       <war>${project.build.directory}/${project.build.finalName}</war> 
       <scanIntervalSeconds>1</scanIntervalSeconds> 
      </configuration> 
     </plugin>--> 
     <plugin> 
      <groupId>org.apache.tomcat.maven</groupId> 
      <artifactId>tomcat7-maven-plugin</artifactId> 
      <version>2.2</version> 
      <configuration> 
       <systemProperties> 
        <spring.profiles.active>dev</spring.profiles.active> 
       </systemProperties> 
       <path>/</path> 
       <url>http://localhost:1234/mymanager</url> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

任何建议将大大受到赞赏。

+0

我应该添加其他收藏和存储库,从来没有任何问题。 – Dylan

+0

你是否改变了Contract类的结构? –

+0

其实这可能是可能的 – Dylan

回答

1

如果Contract的结构发生了变化,那么数据库中存在的旧数据可能具有不同于在类Contract的实例中加载的不同结构。

检查旧值为Contract的json结构和新值Contract以查看是否有差异。

或者如果您对类Contract有控制权,请检查旧版本Contract,并检查新版本是否可以兼容数据。

想象例如,如果公司的名字已经从

private String companyName; 

重构为

private String name; 

你不能用该方法提取的旧数据

public Contract findByNameIgnoreCase(String name); 
+0

如果合同类本身没有改变,但合同存储公司对象并且改变的公司类可能会有相同的影响?我想无论它应该存储一个ID而不是整个对象。 – Dylan

+0

是的,它可以有同样的效果。 –

+0

是否有原因我不会在本地看到此问题? – Dylan

相关问题