Quarkus惰性初始化

6
每次尝试使用rest方法返回所有记录时,我都会遇到以下错误:
错误:
内部服务器错误 处理e6059ae8-5970-4ac2-a1fa-7325768944bb-1时出错,org.jboss.resteasy.spi.UnhandledException: javax.ws.rs.ProcessingException: RESTEASY008205: JSON绑定序列化错误javax.json.bind.JsonbException:无法从model.Board序列化属性“task”
org.hibernate.LazyInitializationException:无法执行请求的惰性初始化[model.Board.task] - 没有会话并且设置不允许在Session之外加载
第一个模型
@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();
    }
}
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接