我有一个 REST Web 服务 API。我使用 JPA 映射数据库。我有一个实体“角色”。使用 POST 方法添加新实体可以正常工作,GET 方法也可以正常工作,但是当我尝试调用 PUT 方法时,我在调试时发现了一些异常:“无法抑制空异常。” 和“不允许自我抑制”。在具有其他实体的测试数据库中,一切正常...在我的情况下添加几乎与编辑一样 - 首先我只获取值,然后在更改后我做所有相同的事情,唯一的区别是使用了 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();
}
}
我是第一次使用网络服务,所以我是新手。
这种行为的原因是什么?这是什么自我抑制错误?
如果您需要其他任何源代码,请告诉我,我将编辑我的帖子。
@编辑:
我在 JpaController 类中发现了一些异常,我的 Persona 类有:
@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。知道如何解决吗?