2016-11-17 27 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")