我们有一个使用带有Postgres数据库的Spring boot1.3运行的应用程序。自定义用户类型是为数据库中的Json类型定义的。遵循并实现UserType以使用ObjectMapper返回Pojo。它工作得非常好。但是现在使用Spring boot1.4,我们得到了这个异常。
自定义用户类型中的代码片段。
@Override
public Object nullSafeGet(ResultSet resultSet, String[] names, SessionImplementor sessionImplementor, Object owner) throws HibernateException, SQLException {
final String result = resultSet.getString(names[0]);
if(result == null) {
return null;
}
try {
ObjectMapper objectMapper = new ObjectMapper();
Object response = objectMapper.readValue(result.getBytes("UTF-8"), returnedClass());
return response;
} catch (Exception e) {
throw new RuntimeException("Failed to process json request:"+e.getMessage(), e);
}
}
我可以看到,找到了来自数据库的响应,objectmapper也对其进行了转换。返回时抛出此错误。
组织。springframework。果心转换ConverterNotFoundException:未找到能够从类型[java.util.HashMap]转换为类型[com.company.component.entity.dto.CustomDataDto]的转换器
我们在Spring boot的WebAppConfiguration中配置了MappingJackson2HttpMessageConverter。
自定义数据到Pojo:
package com.company.component.entity.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.springframework.boot.jackson.JsonComponent;
import java.io.Serializable;
import java.util.List;
@JsonInclude(value = JsonInclude.Include.NON_EMPTY)
public class CustomDataDto implements Serializable {
private static final long serialVersionUID = 4884047700260085799L;
String id;
List<MessagesDto> messages;
List<CommentsDto> comments;
List<MsgCmtMappingDto> msgCmtMapping;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<MessagesDto> getComments() {
return comments;
}
public void setComments(List<MessagesDto> comments) {
this.comments = comments;
}
public List<CommentsDto> getMessages() {
return messages;
}
public void setMessages(List<CommentsDto> messages) {
this.messages = messages;
}
public List<MsgCmtMappingDto> getMsgCmtMapping() {
return msgCmtMapping;
}
public void setMsgCmtMapping(List<MsgCmtMappingDto> msgCmtMapping) {
this.msgCmtMapping = msgCmtMapping;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof CustomDataDto)) return false;
CustomDataDto that = (CustomDataDto) o;
if (!id.equals(that.id)) return false;
if (!messages.equals(that.messages)) return false;
if (!comments.equals(that.comments)) return false;
return msgCmtMapping.equals(that.msgCmtMapping);
}
@Override
public int hashCode() {
int result = id.hashCode();
result = 31 * result + messages.hashCode();
result = 31 * result + comments.hashCode();
result = 31 * result + msgCmtMapping.hashCode();
return result;
}
}
只需检查您的pojo类
您试图将字符串(来自数据库)显示为映射(pojo类中的字段)
我有这门课: 这个问题: 但我有这个错误
我知道这是另一个类似的问题,但我自己无法回答,这就是我写信给你寻求帮助的原因。 我尝试创建自己的@Query,并在两种情况下返回一个转换错误。我的猜测是服务有问题,但这是我的知识结束。 下面是我的代码: > 主实体 2.第二种模式 3.第三种模式 存储库 @Repository public interface UserRepository extends jparepository { } 服务
我必须运行一个本机查询来检索要插入到声明它的Jpa存储库以外的模型中的数据,当我执行函数loadValoriPreventivoUnica时,我有以下错误。我该如何解决这个问题?这是由于什么原因? 错误: [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap]键入[
获取以下错误: 请帮我把结果设置到这个BO类中。
我将spring与JPA一起使用,并尝试使用@query与SQL query一起执行查询,并尝试将结果映射到一个对象。我有不同的实体类和映射到其他dto,因为我不想要所有的列。获取以下错误 如何解决上述问题。 如果问题无法解决,那么我们可以使用spring data JPA在不使用@Query的情况下解决问题吗?怎么做? 使用JPQL::编辑:: 获取以下错误