1

我正在使用 Play-Morphia 创建我的应用程序,并且我有一个具有公共静态最终成员的类,当我在对象上使用 find() 函数时,我得到了该对象,但只有它的公共或私有成员,但不是它的公共静态最终成员。例如:

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

现在,在将此对象保存到 Mongo 并调用 Person.find().first() 或任何 Person.find() 函数后,我得到: {"name" : "John", "age" : 30} -->不包括身份证。

有没有人可以解决这个问题?

4

2 回答 2

3

静态变量在类级别,而 mongodb 实体对应于每个对象。因此静态变量不会被保存到 mongodb 集合中。您能告诉我们为什么要将静态(甚至最终)变量放入 mongodb 吗?你的业务逻辑是什么?

于 2012-10-29T10:18:24.993 回答
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 可以在客户端生成并且保证是唯一的。请注意,您不应该静态标志,但最终表明该字段不应该是可变的。

将字段本身设为私有,只是不为 id 提供设置器 - 这样您的代码的其他部分将无法影响 id 字段。

于 2012-10-29T16:23:54.357 回答