在我的 springboot 项目中,我有一个名为
的模块型号
这里我有一个类 RealmRole:
public class RealmRole {
private String id;
private String name;
public RealmRole() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "RealmRole{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}
从请求中我得到了
List<RealmRole>
现在我想按名称过滤 RealmRole:
realmRoleList.stream().filter(realmRole.getName().equals("user")).forEach(sout)
这会导致错误:
消息:类 java.util.LinkedHashMap 无法转换为类 de.test.userregistration.model.RealmRole (java.util.LinkedHashMap位于加载程序'bootstrap'的java.base模块中; de.test.userregistration.model.RealmRole 位于未命名模块中 加载器“应用程序”)
即使我只是尝试:
realmRoleList.stream().forEach(sout)
我也遇到同样的错误。
我已经阅读了一些问题,但找不到此问题的答案。 我已经从 pom.xml 中删除了 devtools,因为我读到这可能会导致类加载器问题。
最后使用“collect(Collectors.toList())”将结果转换回列表。
我遇到了这个问题,试图找到这个确切问题的答案,但找不到任何东西。所以我想我会用我的解决方案来回答这个问题。
当我将对象保存为 JSON,然后尝试从 Redis 检索 JSON 时,我遇到了这个问题。我认为 JSON 的类/类型无法确定,因此它被加载到 LinkedHashMap 中。我通过修改 ObjectMapper 的 Bean 解决了这个问题,这是 Jackson 用于序列化和反序列化的。
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
return objectMapper;
}
这样做的目的是在将 JSON 保存到 Redis 时添加类信息,以便从 Redis 检索数据时知道对象的类/类型。