1

Play-Morphia を使用してアプリケーションを作成しています。また、public static final メンバーを持つクラスがあり、オブジェクトで find() 関数を使用すると、オブジェクトを取得しますが、パブリックまたはプライベート メンバーのみを使用します。 、しかしその public static final メンバーではありません。例えば:

public class Person{
    public String name;
    public int age;
    public static final String id;
}

さて、このオブジェクトを Mongo に保存し、Person.find().first() または任意の Person.find() 関数を呼び出すと、次のようになります: {"name" : "John", "age" : 30} --> IDは含まれていません。

誰かがこの問題の解決策を持っていますか?

4

2 に答える 2

0

まず、ObjectId 型の id フィールドを作成する方がよいでしょう。そこで、次のような設定をお勧めします。

public class Person{

  private final ObjectId id = new ObjectId();
  private String name;
  private int age;

  public void setName(String name) {
    this.name = name;
  }
  public void setAge(int age) {
    this.age = age;
  }
}

ObjectId はクライアント側で生成でき、一意であることが保証されます。static フラグは使用しないでください。ただし、最後のフラグは、フィールドが変更可能であってはならないことを示しています。

フィールド自体を非公開にし、id のセッターを提供しないようにします。これにより、コードの他の部分が id フィールドに影響を与えることができなくなります。

于 2012-10-29T16:23:54.357 に答える