Model 序列化程序由于EBean中的惰性连接而生成NullPointerException

Model 序列化程序由于EBean中的惰性连接而生成NullPointerException,model,playframework-2.0,ebean,Model,Playframework 2.0,Ebean,我有一个模型的序列化程序,如下所示: @Override public void serialize(MyModel model, JsonGenerator generator, SerializerProvider serializer) throws IOException,JsonProcessingException { if (model == null) return; SimpleDateFormat en = new SimpleDateFormat("yyy

我有一个模型的序列化程序,如下所示:

@Override
public void serialize(MyModel model, JsonGenerator generator, SerializerProvider serializer) throws IOException,JsonProcessingException {
    if (model == null) return;

    SimpleDateFormat en = new SimpleDateFormat("yyyy-MM-dd");

    generator.writeStartObject();

    generator.writeNumberField("id", model.id);
    generator.writeStringField("name", model.name);
    generator.writeStringField("display", model.toString());

    SubModel subModel = model.subModel;

    // HERE IT IS :
    subModel.refresh(); // required to not have a nullpointerexception
    // If I don't do that, the subModel.xxxx will throw a NullPointerException
    // If I log the content :
    Logger.info(String.valueOf(subModel));

    // It will work (display the toString()) AND the following won't throw a NullPointerException

    generator.writeObjectFieldStart("quotas");
        generator.writeNumberField("id", subModel.id);
        generator.writeStringField("display", subModel.toString());
    generator.writeEndObject();


    generator.writeEndObject();
    generator.close();
}
为什么??有没有办法避免调用
refresh()
或其他方法

谢谢你的帮助

顺便问一下,是否可以在序列化程序中使用序列化程序:在我的例子中,我想列出
模型
的所有属性,但我只想列出子模型的一部分。这就是这个序列化程序的目标。但据我所知,我将所有属性添加到列表中,并将它们添加到生成器中(第9行->第11行)。是否可以通过添加子模型(多通关系)序列化模型的所有直接属性,而不在关系上使用@JsonIgnore


感谢第二次帮助;)

有时候,Ebean很难与公共属性进行连接,因此请尝试在模型中使用getter:
getSubmodel()


完美的成功了。我在没有更改var的public->private的情况下尝试了它,但它不起作用。但如果设置为“私人”,它就像一个符咒。谢谢
public class MyModel extends Model {

   ...

   private SubModel subModel;

   public SubModel getSubModel() {
      return this.subModel;
   }
}