RESTWebサービスAPIがあります。JPAを使用してデータベースをマッピングしました。私はエンティティ「ペルソナ」を持っています。POSTメソッドを使用して新しいエンティティを追加すると、GETメソッドも正常に機能しますが、PUTメソッドを呼び出そうとすると、デバッグ中に「null例外を抑制できません」という例外が見つかりました。および「自己抑制は許可されていません」。他のエンティティを含むテストデータベースでは、すべてが正常に機能します...追加は、私の場合の編集とほぼ同じように機能します。最初は値のみを取得し、変更後はすべて同じように実行します。唯一の違いは、使用されるメソッドPUTがあることです。 POSTの代わりに。
これは私のPUTメソッドです(ここでは例外が発生します):
@PUT
@Consumes({"application/xml", "application/json"})
public Response edit(Persona entity) {
try {
getJpaController().edit(entity);
return Response.ok().build();
} catch (Exception ex) {
return Response.notModified(ex.getMessage()).build();
}
}
私は初めてWebサービスを使用しているので、初心者です。
そのような行動の理由は何でしょうか?この自己抑制エラーとは何ですか?
他にソースコードが必要な場合は、教えてください。投稿を編集します。
@編集:
JpaControllerクラスでいくつかの例外が見つかりました。私のペルソナクラスには次のものがあります。
@OneToOne(cascade = CascadeType.ALL, mappedBy = "persona")
private Personaacceso personaacceso;
JpaControllerには次のものがあります。
Personaacceso personaaccesoOld = persistentPersona.getPersonaacceso();
Personaacceso personaaccesoNew = persona.getPersonaacceso();
if (personaaccesoOld != null && !personaaccesoOld.equals(personaaccesoNew)) {
if (illegalOrphanMessages == null) {
illegalOrphanMessages = new ArrayList<String>();
}
illegalOrphanMessages.add("You must retain Personaacceso " + personaaccesoOld + " since its persona field is not nullable.");
}
だから私はPersonaaccesoを保持しなければならないというメッセージを示しています。それを解決する方法はありますか?