我正在开发一个Dropwizard应用,在我加入mongojack之后,我在GET请求中面临一个奇怪的错误。
我有一个简单的GET查询,ID作为路径参数。它在我加入mongojack之前工作,并为我的实体添加了两个注释:
public class Bill {
@javax.persistence.Id @org.mongojack.ObjectId
private String id;
@javax.persistence.Id @org.mongojack.ObjectId
public String getId() { return id; }
//...
}
最让我感到困惑的是,请求实际上已被接受。当我调试时,我可以进入该方法。实体从MongoDB加载到内存中,看起来很好。所以我怀疑这可能实际上是序列化问题,但目前我卡住了。有什么想法吗?
更新
似乎是一个已知的mongojack问题:https://github.com/devbliss/mongojack/issues/26。后来我想为我的GET使用没有ObjectIds的自定义DTO,所以这应该不再相关了。我仍然不明白为什么Dropwizard将其映射到400响应......
答案 0 :(得分:0)
我仍然不明白为什么Dropwizard将此映射为400响应
Dropwizard,通过Jackson,使用所有getter(或@JsonProperty
注释字段/方法)生成JSON,如您所知。如果在getter上发生任何异常(或反序列化时设置者),dropwizard会自动返回400 Bad Request
。
我想这是有道理的,因为它期望简单的POJO DTO具有愚蠢的吸气剂和设定器。