1

次のように、プロジェクトで Spring Data Mongo を使用しています。

  1. Spring Data MongoDB 1.2/Spring Data Commons 1.5
  2. 春 3.2.2 リリース
  3. MongoDB / QueryDSL 2.9/ Mongo Java ドライバー 2.10.1

ケース 1: @Id は Spring Data Commons から、@Document は Spring Data Mongo から。

@Document
class User{
    @Id String id;
}


@Document
class Picture{
    @Id String id;
}

@Document 
class Avatar extends Picture{
    @DBref User user;
}

Spring Data Repostory api も QueryDSL も使用していません。ユーザーがアバター データを取得することはできません。

//decalred in repository
List<Avatar> findByUser(User user);

// or from the QueryDSL executor
List<Avatar> avatars=rep.findAll(QAvatar.avatar.user.eq(user));

すべてが空のコレクションを返します (もちろん、いくつかのデータが含まれています)。

ケース 2 : @DBRef を削除すると、最初にアバターとユーザーを挿入した後に機能しましたが、ユーザーのデータを更新したときに、ユーザーごとにアバターを取得し、空のリストを返します。

@Document 
class Avatar extends Picture{
    User user;
}

ケース 3 : User を String(userid) に変更すると、機能します。

@Document 
class Avatar extends Picture{
    String userId;
}

ここでMongoDBのJavaモデリングに関する提案はありますか? ありがとう。

4

0 に答える 0