2016-11-17 64 views
1

我正在使用Sprind数据MongoDb,MongoTemplate和MongoOperations将数据保存到MongoDB中。 一切工作正常,没有错误或异常,但数据仍未插入到数据库中。我正在使用MongoOperations的save方法来保存数据。MongoOperations保存功能无法正常工作

这是初步认识部分我的pom.xml

  <properties> 
       <spring.version>4.2.8.RELEASE</spring.version> 
       <springsecurity.version>3.2.0.RELEASE</springsecurity.version> 
       <log4j.version>1.2.17</log4j.version> 
       <commons.fileupload.version>1.3.1</commons.fileupload.version> 
       <commons.io.version>2.4</commons.io.version> 
       <springsocial.version>1.1.0.RELEASE</springsocial.version> 
      </properties> 

      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-jms</artifactId> 
       <version>${spring.version}</version> 
       <scope>provided</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-core</artifactId> 
       <version>${spring.version}</version> 
       <scope>provided</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-web</artifactId> 
       <version>${spring.version}</version> 
       <scope>provided</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-webmvc</artifactId> 
       <version>${spring.version}</version> 
       <scope>provided</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework.data</groupId> 
       <artifactId>spring-data-mongodb</artifactId> 
       <version>1.9.4.RELEASE</version> 
      </dependency> 

这里是我的DBOPerations类

import java.util.List; 

import org.springframework.context.ApplicationContext; 
import org.springframework.context.annotation.AnnotationConfigApplicationContext; 
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 com.bng.monitor.config.MongoConfig; 
import com.bng.monitor.model.User; 
//import org.springframework.context.support.GenericXmlApplicationContext; 

public class DbOperations { 

    public static void main(String[] args) { 

    // For XML 
    //ApplicationContext ctx = new GenericXmlApplicationContext("SpringConfig.xml"); 

    // For Annotation 
    ApplicationContext ctx = 
      new AnnotationConfigApplicationContext(MongoConfig.class); 
    MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate"); 

    User user = new User("kv", "password123"); 

    // save 
    mongoOperation.save(user); 

    // now user object got the created id. 
    System.out.println("1. user : " + user); 

    // query to search user 
    Query searchUserQuery = new Query(Criteria.where("username").is("kv")); 

    // find the saved user again. 
    User savedUser = mongoOperation.findOne(searchUserQuery, User.class); 
    System.out.println("2. find - savedUser : " + savedUser); 

    // update password 
    mongoOperation.updateFirst(searchUserQuery, 
         Update.update("password", "new password"),User.class); 

    // find the updated user object 
    User updatedUser = mongoOperation.findOne(searchUserQuery, User.class); 

    System.out.println("3. updatedUser : " + updatedUser); 

    // delete 
    mongoOperation.remove(searchUserQuery, User.class); 

    // List, it should be empty now. 
    List<User> listUser = mongoOperation.findAll(User.class); 
    System.out.println("4. Number of user = " + listUser.size()); 

    } 

} 

这里是我的模型类

import org.springframework.data.annotation.Id; 
import org.springframework.data.mongodb.core.mapping.Document; 

@Document(collection = "users") 
public class User { 

    @Id 
    private String id; 

    private String username; 

    private String password; 

    public User(String username, String password){ 
     super(); 
     this.username = username; 
     this.password = password; 
    } 

    public void setId(String id){ 
     this.id = id; 
    } 

    public String getId(){ 
     return this.id; 
    } 

    public void setUsername(String username){ 
     this.username = username; 
    } 

    public String getUsername(){ 
     return this.username; 
    } 

    public void sePassword(String password){ 
     this.password = password; 
    } 

    public String gePassword(){ 
     return this.password; 
    } 
} 

,这里是我的输出,当我运行DBOperations类

367 [main] INFO org.springframework.context.annotation.AnnotationConfigApplicationContext - 刷新org.spring[email protected]5d6f64b1:启动日期[Thu Nov 17 16:41:10 IST 2016];上下文层次结构的根源 集合是否存在? :假 1.用户:[email protected] 2.发现 - savedUser:空 3. updatedUser:空 4的用户数= 0

可有人告诉我这里有什么不对?

+0

你能剔除在数据库操作中的所有其他电话也试着救?也请张贴相关的部分。对于那些想要帮助你的人来说更容易一些。 – Veeram

+0

@Veeram。试了一样。没有运气。 – KayV

+0

请根据以前的评论更新帖子。 – Veeram

回答

1

问题出在User.java上。

  1. 实体类的构造函数需要用@PersistenceConstructor进行注释。

@PersistenceConstructor用于标记的构造函数将被用于从蒙戈服务器获取数据时建立的实体。

  • 如User.java指定的集合的名称是错误的:
  • @Document(collection = "users")

    所以,当我改变了集合名称为“用户“,一切正常。

    @Document(collection = "user")