我在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"
}
}
我希望能够创建一个新的办公室行,只有当它还不存在时,有什么方法可以做到这一点吗?
答案 0 :(得分:0)
您可以在Office模型的ID字段上添加@JsonIgnore
注释,并在Office类findByName(String name)
上创建一个方法,该方法将返回一个office条目。