无法解析存储库的匹配构造函数

时间:2017-10-09 09:11:06

标签: java eclipse mongodb maven spring-boot

我尝试使用mongodb运行项目但收到错误:

  

创建名为'IUserRepository'的bean时出错:无法解析匹配的构造函数(提示:为简单参数指定索引/类型/名称参数以避免类型歧义)

MongoConfig代码:

package MediaServerFacade.Public.Data.repository;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.MongoFactoryBean;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

import com.mongodb.Mongo;

@Configuration
@EnableMongoRepositories
public class MongoConfig {
    @Bean
    public MongoFactoryBean mongo(){
        MongoFactoryBean mongo = new MongoFactoryBean();
        mongo.setHost("localhost");
        return mongo;
    }
    @Bean
    public MongoOperations mongoTemplate(Mongo mongo){
        return new MongoTemplate(mongo, "LearnPlace");
    }
}

IUserRepository代码:

package MediaServerFacade.Public.Data.repository;

import java.util.UUID;


import org.springframework.data.mongodb.repository.MongoRepository;

import MediaServerFacade.Public.Data.User;

public interface IUserRepository extends MongoRepository<User, UUID>{
    public User getById(UUID id);
    public void update(User entity) ;
    public void delete(UUID id) ;
    public void insert(User entity) ;
    public Iterable<User> getAll() ;
    public long count();

}

用户存储库实现:

package MediaServerFacade.Public.Data.repository;

import java.util.List;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;

import MediaServerFacade.Public.Data.User;

public class UserRepository  implements IUserRepository{
    @Autowired
    private MongoOperations _mongoOperations;   

    @Override
    public User getById(UUID id) {
        return _mongoOperations.findById(id, User.class);       
    }

    @Override
    public void update(User entity) {
        Update update = new Update();       
        _mongoOperations.updateFirst(Query.query(Criteria.where("_id").is(entity.getId())), update, User.class);        
    }

    @Override
    public void delete(UUID id) {
        _mongoOperations.remove(Query.query(Criteria.where("_id").is(id)));     
    }

    @Override
    public void insert(User entity) {
        _mongoOperations.insert(entity);
    }

    @Override
    public Iterable<User> getAll() {
        return _mongoOperations.findAll(User.class);
    }

    @Override
    public long count() {       
        return _mongoOperations.getCollection("users").count();
    }

    @Override
    public <S extends User> List<S> save(Iterable<S> entites) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public List<User> findAll() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public List<User> findAll(Sort sort) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Page<User> findAll(Pageable pageable) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public <S extends User> S save(S entity) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public User findOne(UUID id) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public boolean exists(UUID id) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public Iterable<User> findAll(Iterable<UUID> ids) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void delete(User entity) {
        // TODO Auto-generated method stub

    }

    @Override
    public void delete(Iterable<? extends User> entities) {
        // TODO Auto-generated method stub

    }

    @Override
    public void deleteAll() {
        // TODO Auto-generated method stub

    }
}

pom.xml的内容:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>MediaServerFacade</groupId>
   <artifactId>Public</artifactId>
   <version>0.0.1-172186a1-66e2-4a96-acac-f35fa6fe587d</version>
   <packaging>war</packaging>
   <name>Public</name>
   <url>http://maven.apache.org</url>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <version.spring.mongodb>1.4.0.RELEASE</version.spring.mongodb>         
      <demo.port>8083</demo.port>
      <!-- Main class -->
      <start-class>MediaServerFacade.Public.App</start-class>   
   </properties>
   <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.7.RELEASE</version>
</parent>
   <dependencies>
   <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-websocket</artifactId>
      </dependency>
         <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-tomcat</artifactId>
         <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>org.kurento</groupId>
         <artifactId>kurento-client</artifactId>
      </dependency>   
      <dependency>
         <groupId>org.webjars</groupId>
         <artifactId>webjars-locator</artifactId>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
      </dependency>
      <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
      </dependency>
   </dependencies>
   <build>
      <plugins>
         <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
               <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
               <tarLongFileMode>posix</tarLongFileMode>
               <archive>
                  <manifest>
                     <mainClass>MediaServerFacade.Public.App</mainClass>
                  </manifest>
               </archive>
               <descriptor>src/assembly/bin.xml</descriptor>
               <finalName>${project.artifactId}-${project.version}</finalName>
               <appendAssemblyId>false</appendAssemblyId>
            </configuration>
            <executions>
               <execution>
                  <phase>package</phase>
                  <goals>
                     <goal>single</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
               <path>/mediaserver</path>
               <update>true</update>
               <ignorePackaging>true</ignorePackaging>
               <url>http://localhost:8080/manager/text</url>
               <username>admin</username>
               <password>r06d0288</password>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <configuration>
               <mainClass>${start-class}</mainClass>
            </configuration>
         </plugin>
      </plugins>
   </build>
   <profiles>
      <profile>
         <id>default</id>
         <activation>
            <activeByDefault>true</activeByDefault>
         </activation>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-assembly-plugin</artifactId>
                  <configuration>
                     <descriptor>src/assembly/bin.xml</descriptor>
                     <finalName>${project.artifactId}-${project.version}</finalName>
                     <appendAssemblyId>false</appendAssemblyId>
                  </configuration>
                  <executions>
                     <execution>
                        <phase>package</phase>
                        <goals>
                           <goal>single</goal>
                        </goals>
                     </execution>
                  </executions>
               </plugin>
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <executions>
                     <execution>
                        <phase>package</phase>
                        <configuration>
                           <tasks>
                              <copy file="${project.build.directory}/target/${project.artifactId}-${project.version}-bin.zip" tofile="${project.build.directory}/target/${project.artifactId}-${project.version}.zip" />
                           </tasks>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
               <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
               <mainClass>${start-class}</mainClass>
               <layout>ZIP</layout>
               <classifier>exec</classifier>
            </configuration>
            <executions>
               <execution>
                  <goals>
                     <goal>repackage</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <id>no-assembly</id>
      </profile>
   </profiles>
   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.4.1.RELEASE</version>
         </dependency>
         <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-websocket</artifactId>
            <version>4.3.3.RELEASE</version>
         </dependency>
         <dependency>
            <groupId>org.kurento</groupId>
            <artifactId>kurento-client</artifactId>
            <version>6.6.2</version>
         </dependency>
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <version>1.4.1.RELEASE</version>
         </dependency>
         <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>webjars-locator</artifactId>
            <version>0.32</version>
         </dependency>
         <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>2.10.1</version>
         </dependency>
         <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-mongodb</artifactId>
            <version>1.4.0.RELEASE</version>
         </dependency>
      </dependencies>
   </dependencyManagement>
    <repositories>
        <repository>
            <id>spring-releases</id>
            <name>Spring Releases</name>
            <url>https://repo.spring.io/libs-release</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <name>Spring Releases</name>
            <url>https://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>
</project>

我尝试将该存储库用作:

 @Autowired
  private IUserRepository repository;

我的applicationContext.xml为空。我还应该做些什么来正确运行项目?

0 个答案:

没有答案