当我尝试导航到端点时,出现以下错误类型定义错误:[简单类型,类org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor];嵌套异常是 com.fasterxml.jackson.databind.exc.InvalidDefinitionException:未找到类 org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor 的序列化程序,也未发现用于创建 BeanSerializer 的属性(为避免异常,请禁用 SerializationFeature.FAIL_ON_EMPTY_BEANS)我检查了我所有的模型,所有的属性都有 getter 和 setter。所以有什么问题 ?我可以通过添加来解决这个问题,spring.jackson.serialization.fail-on-empty-beans=false但我认为这只是一种隐藏异常的解决方法。编辑Product 模型:@Entitypublic 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}在我的控制器中,我回来了 ResponseEntity<RestResponse<PagedResponse<Product>>>
3 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
我在使用 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 在您调用它时会“急切地”/立即调用它,因此您已经完全填充了实际的实体。
添加回答
举报
0/150
提交
取消