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

找不到org.hibernate.proxy.pojo.ByteBuddy.ByteBuddyInterceptor类的序列化程序

濮阳君浩
2023-03-14

当我试图导航到一个endpoint时,我得到以下错误

类型定义错误:[简单类型,类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-emptybeans=false来修复这个问题,但我认为这只是一个隐藏异常的工作。

编辑

产品型号:

@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
}

在我的控制器中,我返回responseEntity >>

共有1个答案

景宏朗
2023-03-14

我在使用spring存储库进行教程时遇到了这个错误。原来是在为我的实体构建服务类的阶段出错了。

在您的serviceImpl类中,可能有如下内容:

    @Override
    public YourEntityClass findYourEntityClassById(Long id) {
      return YourEntityClassRepositorie.getOne(id);
    }

将其更改为:

    @Override
    public YourEntityClass findYourEntityClassById(Long id) {
      return YourEntityClassRepositorie.findById(id).get();
    }

基本上,getOne是一个惰性加载操作。因此,您只得到对该实体的引用(代理)。这意味着实际上没有进行DB访问。只有当您调用它的属性时,它才会查询DB。findByID在调用它时立即进行“eagerly”/调用,这样就完全填充了实际的实体。

看一下这个:链接到getOne&findByID之间的区别

 类似资料:
  • com.fasterxml.jackson.databind.jsonMappingException:未发现用于java.io.BufferedReader类的序列化程序,也未发现用于创建BeanSerializer的属性(为了避免异常,禁用SerializationFeature.fail_on_empty_beans)(通过引用链:pj.core.bean.actionResult[“dat

  • 我有一个类的数组列表,如下所示: 我想把这个列表写成Json,并尝试了以下代码: 并收到以下错误信息: 找不到类~~~~~的序列化程序,也找不到创建BeanSerializer的属性(为了避免异常,请禁用SerializationFeature.FAIL_ON_EMPTY_BEANS)(通过引用链:java.util.ArrayList[0])` 我尝试添加但由于未知原因,它使所有Person对象

  • 下面是我的项目的实体类 这是会话表 这里是用户实体 我正在使用JPARepository在我的mysql数据库中保存训练和会话对象 但每当我保存训练对象或会话对象时 我得到了错误 我谷歌了它,发现我需要序列化和反序列化手动…但我不知道怎么做…请帮帮我..

  • 问题内容: 我有以下代码在引用时可在控制台应用程序中使用 当我更新对我的引用时,得到: 找不到play.api.libs.json.JsObject类型的Json序列化程序作为JsObject。尝试为此类型实现隐式OWrites或OFormat。 然后 val collection = db.collectionJSONCollection 我究竟做错了什么? 问题答案: ReactiveMong

  • 问题内容: 我正在处理,&,但出现此错误。 请在下面检查我的实体 我该如何解决? 问题答案: 通过hibernate代理对象进行延迟加载时,我遇到了类似的问题。通过用以下方式注释具有延迟加载的私有属性的类来解决此问题: 我假设您可以在代理对象上添加打破JSON序列化到该批注的属性。 问题在于实体是延迟加载的,序列化是在实体完全加载之前发生的。