每当尝试使用rest方法返回所有记录时,都会出现以下错误。
错误:
内部服务器错误 错误处理e6059ae8-5970-4ac2-a1fa-7325768944bb-1,org.jboss.resteasy.spi.UnhandledException:javax.ws.rs.ProcessingException:RESTEASY008205:JSON绑定序列化错误javax.json.bind.JsonbException:无法序列化属性来自模型板的“任务”
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();
}
}
答案 0 :(得分:4)
问题是,在JSON序列化期间,它将尝试序列化对task
进行反向引用的Board
列表,并且该图中的某些内容可能未初始化。此外,序列化可能会导致无法直接在JSON中建模的循环,因此您必须以某种方式解决此问题。
@JsonIgnore
从JSON序列化中排除字段