当前位置: 首页 > 知识库问答 >
问题:

使用Set而不是List时的异常

鞠自明
2023-03-14

我有一个spring boot项目和一些实体,具体来说,我有一个学生班,有一个DesiredCourses列表,应该是一个集合

当我使用:

@OneToMany(mappedBy = "student", cascade = CascadeType.ALL)
public List<StudentDesiredCourseEntity> getStudentDesiredCourses() {
    return studentDesiredCourses;
}

public void setStudentDesiredCourses(List<StudentDesiredCourseEntity> studentDesiredCourses) {
    this.studentDesiredCourses = studentDesiredCourses;
}

一切正常但当我使用

@OneToMany(mappedBy = "student", cascade = CascadeType.ALL)
public Set<StudentDesiredCourseEntity> getStudentDesiredCourses() {
    return studentDesiredCourses;
}

public void setStudentDesiredCourses(Set<StudentDesiredCourseEntity> studentDesiredCourses) {
    this.studentDesiredCourses = studentDesiredCourses;
}

我明白了

org.springframework.http.converter.HttpMessageNotReadableException",
"message":"Could not read JSON: (was java.lang.NullPointerException) (through reference chain: edu.cs6310.project4.entities.StudentEntity[\"studentDesiredCourses\"]->java.util.HashSet[0]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: edu.cs6310.project4.entities.StudentEntity[\"studentDesiredCourses\"]->java.util.HashSet[0])

我有什么遗漏或需要做的额外工作吗?

根据请求,equals和hashcode

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof StudentDesiredCourseEntity)) return false;

    StudentDesiredCourseEntity that = (StudentDesiredCourseEntity) o;

    if (!course.equals(that.course)) return false;
    if (!priority.equals(that.priority)) return false;
    if (!student.equals(that.student)) return false;

    return true;
}

@Override
public int hashCode() {
    int result = priority.hashCode();
    result = 31 * result + course.hashCode();
    result = 31 * result + student.hashCode();
    return result;
}

共有2个答案

万俟心思
2023-03-14

Jackson无法将json数组转换为hashSet。为了做到这一点,您需要创建一个自定义杰克逊转换器。这里有一个例子http://kdubblabs.com/java/retrofit-by-square/retrofit-using-jackson-json-conversion/

岳研
2023-03-14

正如alexwen在评论中提到的,这种方法不起作用的原因是没有在hashcode/equals方法中处理null

 类似资料:
  • 问题内容: 我有一个包含多个列表作为其元素的列表 如果我使用内置的set函数从此列表中删除重复项,则会收到错误消息 我正在使用的代码是 TopP是一个列表,就像上面的eg一样 set()的这种用法是否错误?还有其他方法可以对以上列表进行排序吗? 问题答案: 集要求其项是可 哈希的 。在Python预定义的类型中,只有不可变的类型(例如字符串,数字和元组)是可哈希的。可变类型(例如列表和字典)不可散

  • 我一直在遵循的python flappy鸟AI教程从techwith timm,我得到了这个错误; 我的代码是这样的 我读过其他文章也有同样的问题,我理解,但是不是像那样的列表。我不知道该怎么办。 我试着做来获取“列表”的第一个图像,但它说对象不是列表。为什么?

  • 我对使用颤振和特定于平台的代码非常陌生,所以如果这是一个愚蠢的问题,请原谅我。我正在使用一个事件通道将数据从android端返回到Flatter。我正在返回一份清单 但是,当我试图添加它时,它给出了一个异常,“未处理的异常:类型'列表'不是类型'列表'的子类型 这是我要将贴图对象添加到的列表。 列表 这是我的添加代码。忽略print语句。 我尝试过像cast或from这样的方法,但它对我不起作用,

  • 我试图开发一个android应用程序与谷歌地图v2,位置服务和一些控制按钮。 我不想把所有这些东西放在一个MainActivity类中,所以我想我可以把所有代码拆分成更多的类。MainActivity将控制所有的GUI内容,并对地图或位置事件做出反应。 现在我有以下问题。在onCreate中,我实例化了其他类: 带有findFragmentById的行是导致异常的行。我认为这是因为片段管理器无法访

  • 我试图获取一个结果集并将其强制转换为bean。不起作用。但后来我试着向bean列表进行了强制转换,它起作用了。有人能告诉我如何使用Jdbctemplate和RowMapping直接获取Bean对象吗? 如果有没有行映射器的其他解决方案,那就更好了。因为在表中,我有50+列,所以很难创建具有这些字段的Bean

  • 问题内容: 我对php比较陌生。有一件非常基本的事情困扰着我。我了解php用于使网站动态化。我也了解php是可用于创建动态网站的许多服务器端脚本语言之一。 但是,我不明白的是,何时需要使用index.php页面。例如,如果我的索引页面上只有一个简单的登录页面,那么它也可能只是一个简单的html页面。对?那我为什么要使它成为index.php而不是index.html? 一个示例情况的例子将是很好的