我一直在升级到jackson的更高版本(即从org.codehaus到com.fasterxml ......),突然间我面临许多奇怪的错误。经过几个小时的尝试和调整,我仍然无法让它工作,所以我问你们,如果你能帮助我。
我有以下方法:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("getTerminalsByIdAndLocation")
List<SearchResultDto> getTerminalsByIdAndLocation(@QueryParam("location") String location, @QueryParam("id") Integer id) throws BusinessException;
并且函数实现只是在存储库中进行查找。
SearchResultDto如下所示:
@JsonIgnoreProperties(ignoreUnknown = true)
public class SearchResultDto implements Serializable {
private static final long serialVersionUID = 1L;
private TerminalId terminalId;
private Integer location;
private String streetNumber;
private String postalcoldeCity;
private Status status;
// getters and setters with no annotation or so
}
当我现在调用我的方法时,我收到以下错误:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: object is not an instance of declaring class (through reference chain: java.util.ArrayList[0]-><long package>.SearchResultDto["terminalId"])
经过大量尝试后,我想我会删除terminalId然后更改为:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: object is not an instance of declaring class (through reference chain: java.util.ArrayList[0]-><long package>AtmSearchResultDto["location"])
我很无能,这里有什么不对?
修改
我还尝试在除String streetNumber
之外的所有内容上使用@JsonIgnore,但仅针对streetNumber
发生同样的异常
答案 0 :(得分:1)
长话短说:我弄乱了我的类路径,并且有两个类加载器,REST方法的实现称为数据库模块中的存储库,它从不同的类加载器获取实例。调整我的maven范围和导入类型后,它现在正在工作!
答案 1 :(得分:0)
我有一个类似的问题,我的问题是我的一个POJO 最终。删除最终关键字可以解决问题。
public final class AccessControlMap extends HashMap<Permission, Set<AccessType>>
//Before
public final class AccessType {
//After
public class AccessType {