【问题标题】:Quarkus lazy initializeQuarkus 延迟初始化
【发布时间】:2020-10-08 14:23:12
【问题描述】:

每当我尝试使用 rest 方法返回所有记录时,我都会收到以下错误。

错误:

内部服务器错误 错误处理 e6059ae8-5970-4ac2-a1fa-7325768944bb-1, org.jboss.resteasy.spi.UnhandledException: javax.ws.rs.ProcessingException: RESTEASY008205: JSON Binding serialization error javax.json.bind.JsonbException: Unable to serialize property model.Board 中的“任务”

org.hibernate.LazyInitializationException: 无法执行请求的延迟初始化 [model.Board.task] - 没有会话并且设置不允许在会话之外加载

第一个模型

@Entity
public class Task{

    @Id
    @Column(name = "TaskID")
    public Long taskId;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "BoardID")
    public Board board;

    @Column(name = "Title")
    public String title;

    @Column(name = "Description", length = 1000)
    public String description;
}

第二个模型

@Entity
public class Board{

    @Id
    @Column(name = "BoardID")
    public Long boardId;

    @OneToMany(mappedBy = "board")
    public List<Task> task = new ArrayList<>();;

    @Column(name = "Title")
    public String title;

    @Column(name = "Position")
    @NotNull
    public int position;
}

存储库:

@ApplicationScoped
@Transactional
public class BoardRepository implements PanacheRepository<Board> {
}

示例 REST 方法

@Transactional
@ApplicationScoped
public class ExampleResource {

    @Inject
    BoardRepository boardRepository;

    @Inject
    TaskRepository taskRepository;

    @GET
    @Transactional
    public List<Board> getAll() {
        return boardRepository.listAll();
    }
}

【问题讨论】:

    标签: java hibernate quarkus


    【解决方案1】:

    问题是,在 JSON 序列化期间,它尝试序列化 task 列表,该列表具有对 Board 的反向引用,并且该图中的某些内容可能未初始化。此外,序列化可能会导致无法直接在 JSON 中建模的循环,因此您必须以某种方式解决此问题。

    【讨论】:

      猜你喜欢
      • 2020-05-10
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 2012-07-27
      相关资源
      最近更新 更多