3

Java Spring MongoDB API を使用しています。MongoTemplate を使用してオブジェクトを削除しようとすると、削除されません。Spring 3.0.6.REALEASE を使用しています。私のコードは以下の通りです:

ビーンズ.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“&gt;
<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 を取得し、id と age で満たされた Student オブジェクトを渡す remove メソッドを呼び出しますが、削除されません。

何か案は?

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

Id は入力された Id です。

例外はありませんが、この Id を見つけるとまだ存在しています。

4

2 に答える 2

4

コレクション名を指定してみてください:

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 , "err" :  null  , "ok" : 1.0}
于 2013-04-04T20:57:26.317 に答える
0

フォローしてみてください

1) Spring データのみの注釈クラスを使用していることを確認してください。完全なコードを提供しなかったため、インポートが表示されません。

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);
于 2013-10-27T18:08:48.623 に答える