我正在制作API以将结果作为JSON
public CompletionStage<Result> update(Long id) {
return CompletableFuture.supplyAsync(() -> {
Building building = service.updateBuilding(id, request().body().asJson());
return ok(Json.toJson(building));
}, ec.current()).exceptionally(throwable -> {
throwable.printStackTrace();
return badRequest();
});
}
发生异常:
- 异常:com.fasterxml.jackson.databind.JsonMappingException:懒得初始化角色集合: models.device.Building.Floors,无法初始化代理 - 没有Session (通过参考链:models.device.Building [&#34; floors&#34;])
但是创建的api正常工作....
public CompletionStage<Result> create() {
return CompletableFuture.supplyAsync(() -> {
Building building = service.createBuilding(request().body().asJson());
return ok(Json.toJson(building));
}, ec.current()).exceptionally(throwable -> {
throwable.printStackTrace();
return badRequest();
});
}
我的问题
如何解决
为什么它刚刚发生,除了名为
详细代码
模型
@Entity
@Table(name = "Buildings")
public class Building {
@Id
@SequenceGenerator(name = "device_sequence", sequenceName = "sq_deviaes")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "device_sequence")
@Column(name = "building_device_id")
private Long id;
@Column (name = "building_id", unique = true)
private Integer buildingId;
@Column(name = "name")
private String name;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "building_device_id")
private List<Floor> Floors;
@NotNull
@Column (name = "updated_at", nullable = false)
private LocalDateTime updatedAt;
控制器
public CompletionStage<Result> create() {
return CompletableFuture.supplyAsync(() -> {
Building building = service.createBuilding(request().body().asJson());
return ok(Json.toJson(building));
}, ec.current()).exceptionally(throwable -> {
throwable.printStackTrace();
return badRequest();
});
}
public CompletionStage<Result> update(Long id) {
return CompletableFuture.supplyAsync(() -> {
Building building = service.updateBuilding(id, request().body().asJson());
return ok(Json.toJson(building));
}, ec.current()).exceptionally(throwable -> {
throwable.printStackTrace();
return badRequest();
});
}
服务
public Building createBuilding(JsonNode jsonNode) {
return LukeJPA.withSharedTransaction(() -> {
return buildingDAO.create(jsonNode).get();
});
}
public Building updateBuilding(Long id, JsonNode jsonNode) {
return LukeJPA.withSharedTransaction(() -> {
Building building = null;
try {
building = buildingDAO.update(id, jsonNode);
} catch (Exception e) {
e.printStackTrace();
}
return building;
});
}