自动加载json反序列化对象

时间:2016-08-25 15:12:53

标签: java jackson playframework-2.0 ebean

我在Play框架2上使用Jackson和Ebean,目前我实现了这两个模型:

@Entity
class User {
    @Id
    public Long id;

    public String name;

    @ManyToOne(cascade = CascadeType.PERSIST)
    public Office office;

    public static Finder<Long, User> find = new Finder<>(User.class);
}


@Entity
class Office {
    @Id
    public Long id;
    public String name;
    public static Finder<Long, Office> find = new Finder<>(Office.class);
}

在数据库中,我已经插入了两个办公室:

Office Table    
ID      Name
1       London
2       Munich

这是Controller代码:

public Result testInsert() {
    User user = Json.fromJson(request().body().asJson(), User.class);
    user.save();

    return Json.toJson(user);
}

目前要让它发挥作用我必须通过这个json:

{
    "id" : 1,
    "name" : "Test",
    "office" : {
        "id" : 1,
        "name" : "London"
    }
}

我希望能够以这种方式仅通过姓名引用办公室:

{
    "id" : 1,
    "name" : "Test",
    "office" : {
        "name" : "London"
    }
}

我希望能够创建一个新的办公室行,只有当它还不存在时,有什么方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:0)

您可以在Office模型的ID字段上添加@JsonIgnore注释,并在Office类findByName(String name)上创建一个方法,该方法将返回一个office条目。