2012-09-27 59 views
1

我正在使用Java Spring MongoDB API。當我使用MongoTemplate並嘗試刪除一個對象時,它不會刪除。我正在使用Spring 3.0.6.REALEASE。我的代碼可以看到下面:Java Spring MongoDB刪除

的beans.xml

<mongo:mongo host=「localhost「 port=「27017「/> 

<mongo:db-factory dbname=「database5「 mongo-ref=「mongo「/> 

<bean id=「mongoTemplate「 class=「org.springframework.data.mongodb.core.MongoTemplate「> 
<constructor-arg name=「mongoDbFactory「 ref=「mongoDbFactory「/> 
</bean> 

@Document 
public class Student { 

@Id 
private String id; 
@Field 
private int age; 

public Student(int age) { 
    this.age = age; 
} 

// getters and setters 
} 

我打通的ApplicationContext的mongoTemplate並調用remove方法傳遞通過ID和年齡填寫學生對象,但它不」刪除。

任何想法?

Student student = new Student(5); 
student.setId(「 「); 
mongoTemplate.remove(student); 

其中ID是一個ID填寫。

沒有例外,但要找到這個ID時,它仍然存在。

+0

哪裏的實際刪除代碼? –

+0

你能否提供你的實際代碼來刪除 - 以及它如何失敗?你只是沒有錯誤,文件停留,或者你有錯誤或其他? –

+0

@RajivJain你解決了你的問題嗎? –

回答

0

嘗試指定的集合名稱:

mongoTemplate.remove(student, "student"); 

或者你也可以嘗試使用查詢來刪除它:

mongoTemplate.remove(new Query(Criteria.where("id").is(student.getId())), Student.class); 

此外,爲了獲得所發生的事情的更多信息,使用GetLastError:

System.out.println(mongoTemplate.getDb().getLastError()); 

如果對象被移除,您將看到n:1像這樣:

{ 「serverUsed」: 「VMD-eumongoacct-002/172.20.15.15:27017」,「N」:1, 「lastOp」:{ 「$ TS」:1365111932, 「$ INC」:1}, 「的ConnectionId」:305018, 「犯錯」:空, 「OK」:1.0}

0

嘗試以下

1)確保您使用的只有春天的數據註解類。因爲,您沒有提供完整的代碼,我看不到您的導入。

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

2)先嚐試保存對象並刪除相同的對象。如果這個測試有效,那麼你的刪除也會起作用。

mongoTemplate.save(userObj); 
System.out.println("saved user id:"+userObj.getId()); 
mongoTemplate.remove(userObj);