2

Springプロジェクトでは、Spring Data MongoDBを使用しており、次の2つのクラスがあります。

public class ClassA
{
@Id
private String id;

private String description

@DBRef
private ClassB classBId;

// Getters and Setters
}

public class ClassB
{
@Id
private String id;

private String description

// Getters and Setters
}

そのため、classAとclassBの2つのコレクションがあり、それらにいくつかのインスタンスを設定しました。

classAインスタンスは次のように保存されます。

{"_id":{"$ oid": "5086b371004d7c4bfff0a142"}、 "_class": "com.spring.custom.ClassA"、 "description": "Description A"、 "classBId":{"$ ref": " classB "、" $ id ":{" $ oid ":" 50866d45004d84852b16a8b8 "}}}

私の質問は、ID 50866d45004d84852b16a8b8のclassBインスタンスを参照するすべてのclassAオブジェクトを返すクエリを作成するにはどうすればよいですか?

私はこのように試しましたが、成功しませんでした:

ClassB cb = new ClassB(); cb.setId("50866d45004d84852b16a8b8");

Criteria criteria = Criteria.where("classBId").is(classBObject);
Query query = new Query(); query.addCriteria(criteria);
4

1 に答える 1

1

私が必要なことをする方法を見つけました...

ObjectId oid = new ObjectId(id);
Criteria.where(classBid+".$id").is(oid);

残念ながら、それは私が期待した方法ではありませんが、それでも解決策です...

次のような同じ結果が得られることを期待して、Spring DataMongoDBAPIを1.0.2RELEASEではなく1.0.4RELEASEに更新しようとしました。

ClassB cb = new ClassB();
cb.setId("50866d45004d84852b16a8b8");

Criteria criteria = Criteria.where("classBId").is(classBObject);
Query query = new Query();
query.addCriteria(criteria); 

しかし、私は次のエラーを受け取り続けました:

java.lang.RuntimeException:jsonはタイプをシリアル化できません:クラスClassB .. ..

于 2012-10-24T15:49:08.550 に答える