当我尝试导航到端点时,出现以下错误



我检查了所有模型,所有属性都有getter和setter。所以有什么问题 ?

我可以通过添加spring.jackson.serialization.fail-on-empty-beans=false来解决此问题,但我认为这只是隐藏异常的一种解决方法。

编辑
Product模型:

@Entity
public class Product {
    private int id;
    private String name;
    private String photo;
    private double price;
    private int quantity;
    private Double rating;
    private Provider provider;
    private String description;
    private List<Category> categories = new ArrayList<>();
    private List<Photo> photos = new ArrayList<>();

    // Getters & Setters
}
PagedResponse类:
public class PagedResponse<T> {

    private List<T> content;
    private int page;
    private int size;
    private long totalElements;
    private int totalPages;
    private boolean last;

    // Getters & Setters
}
RestResponse类别:
public class RestResponse<T> {
    private String status;
    private int code;
    private String message;
    private T result;

    // Getters & Setters
}

在我的 Controller 中,我要返回 ResponseEntity<RestResponse<PagedResponse<Product>>>

最佳答案

我在使用Spring存储库进行教程时遇到了这个错误。原来,该错误是在为我的实体构建服务类的阶段犯的。
在您的serviceImpl类中,您可能有类似以下内容:

    @Override
    public YourEntityClass findYourEntityClassById(Long id) {
      return YourEntityClassRepositorie.getOne(id);
    }
更改为:
    @Override
    public YourEntityClass findYourEntityClassById(Long id) {
      return YourEntityClassRepositorie.findById(id).get();
    }
基本上,getOne是延迟加载操作。因此,您仅获得对该实体的引用(代理)。这意味着实际上没有数据库访问权限。只有在调用它的属性时,它才会查询数据库。当您调用findByID时,它会“立即”执行调用,因此您已完全填充了实际实体。
看看这个:Link to the difference between getOne & findByID

10-01 19:01