(no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
Redis로 Cache하는 도중 위와 같은 오류가 발생하였다.
해당 에러는 Jackson
라이브러리가 참조하려는 객체 생성 시 생성자가 필요한데 정보가 없는 경우다.
나 같은 경우는 Builder
패턴을 사용하여 만들어진 객체를 보내다 보니 해당 오류가 났었다.
// 수정 전 코드 (Builder 패턴)
private RowMapper<RankInfo> MalLRankingMapper() {
return (rs, rowNum) ->
RankInfo.builder()
.id(rs.getLong("id"))
.createdDate(rs.getTimestamp("created_date"))
.ranking(rs.getInt("ranking"))
.foodKeyword(rs.getString("keyword"))
.hits(rs.getInt("hits")).build();
해당 코드를 아래와 같이 보내주니 해결 완료!
private RowMapper<RankInfo> MalLRankingMapper() {
return (rs, rowNum) -> {
RankInfo rankInfo = new RankInfo();
rankInfo.setId(rs.getLong("id"));
rankInfo.setCreatedDate(rs.getTimestamp("created_date"));
rankInfo.setRanking(rs.getInt("ranking"));
rankInfo.setFoodKeyword(rs.getString("keyword"));
rankInfo.setHits(rs.getInt("hits"));
return rankInfo;
};
}