問題はかなり単純ですが、説明するのはちょっと難しいです。
次のような REST サービスがあります。
@Path("categories")
@RequestScoped
public class CategoryResource {
@Inject
CategoriesFacade dao;
@PUT
@Consumes("application/json")
public void putJson(Categories content) {
System.err.println(content.toString()); // <-- ?????
dao.edit(content);
}
// ....
}
そして、次のようなエンティティ オブジェクト:
@XmlRootElement
public class Categories implements Serializable {
@Id
@Column(name = "CATEGORY_ID", unique = true, nullable = false, precision = 5)
private Integer categoryId;
@Column(name = "NAME")
private String name;
@JoinColumn(name = "PARENT_ID", referencedColumnName = "CATEGORY_ID")
@ManyToOne
private Categories parentId;
// ....
}
http リクエストのペイロードは次のとおりです。
PUT http://localhost:8080/api/categories
Data: {"categoryId":"7162","name":"test","parentId":null}
そして、ここにリクエストで取得したカテゴリオブジェクトがあります@PUT
(????でマークされた行を参照してください):
Categories{
categoryId=7162,
name=test,
parentId=Categories{categoryId=null, name=null, parentId=null}
}
ここでわかるようにparentId
、空のオブジェクトが割り当てられています。このようにして、 null にすることはできないCategories
ため、ValidationException を取得しています。name
Jersey を作成してこの種のオブジェクトを提供する方法を考えているので、parentId の null 値は問題ありません。
Categories{
categoryId=7162,
name=test,
parentId=null
}