Spring boot SpringBoot/JHipster rest api配置,转换类型问题

Spring boot SpringBoot/JHipster rest api配置,转换类型问题,spring-boot,jhipster,Spring Boot,Jhipster,当我试图以JsonFormat获取一个对象时,Jhipster版本4.2.2生成的SpringBoot rest api出现问题 Request URL http://localhost:3000/api/models Response Body [ { "id": 1, "name": "lenet", "lossWeights": null, "loss": "categorical_

当我试图以JsonFormat获取一个对象时,Jhipster版本4.2.2生成的SpringBoot rest api出现问题

    Request URL
    http://localhost:3000/api/models
    Response Body
    [
      {
        "id": 1,
        "name": "lenet",
        "lossWeights": null,
        "loss": "categorical_crossentropy",
        "sampleWeightMode": null,
        "isInput": false,
        "isOutput": false,
        "optimizer": {
          "id": 1,
          "optimizerType": {
        "id": 5,
        "name": "SGD"
          }
        },
        "coordinates": {
          "id": 1,
          "xpos": 0,
          "ypos": 0
        },
        "containedModels": [],
        "succeededByModels": [],
        "succeededByLayers": [],
        "containedLayers": [
          {
        "id": 1,
        "name": "input",
        "isInput": true,
        "isOutput": false,
        "isIntermediate": false,
        "coordinates": {
          "id": 2,
          "xpos": 78.376953125,
          "ypos": 108.01763916015625
        },
        "succeededByLayers": null,
        "succeededByModels": null,
        "layerType": {
          "id": 43,
          "name": "InputLayer"
        }
          },
          {
        "id": 2,
        "name": "conv2d_1",
        "isInput": false,
        "isOutput": false,
        "isIntermediate": false,
        "coordinates": {
          "id": 3,
          "xpos": 341.5582275390625,
          "ypos": 102.59124755859375
        },
        "succeededByLayers": null,
        "succeededByModels": null,
        "layerType": {
          "id": 63,
          "name": "Conv2D"
        }
          },
          {
        "id": 3,
        "name": "activation_1",
        "isInput": false,
        "isOutput": false,
        "isIntermediate": false,
        "coordinates": {
          "id": 4,
          "xpos": 623.73193359375,
          "ypos": 99.8780517578125
        },
        "succeededByLayers": null,
        "succeededByModels": null,
        "layerType": {
          "id": 15,
          "name": "Activation"
        }
          },
          {
        "id": 4,
        "name": "max_pooling2d_1",
        "isInput": false,
        "isOutput": false,
        "isIntermediate": false,
        "coordinates": {
          "id": 5,
          "xpos": 941.17724609375,
          "ypos": 102.59124755859375
        },
        "succeededByLayers": null,
        "succeededByModels": null,
        "layerType": {
          "id": 70,
          "name": "MaxPooling2D"
        }
          },
          {
        "id": 5,
        "name": "conv2d_2",
        "isInput": false,
        "isOutput": false,
        "isIntermediate": false,
        "coordinates": {
          "id": 6,
          "xpos": 1253.1962890625,
          "ypos": 99.8780517578125
        },
        "succeededByLayers": null,
        "succeededByModels": null,
        "layerType": {
          "id": 63,
          "name": "Conv2D"
        }
          },
          {
        "id": 6,
        "name": "max_pooling2d_2",
        "isInput": false,
        "isOutput": false,
        "isIntermediate": false,
        "coordinates": {
          "id": 7,
          "xpos": 1540.2081298828125,
          "ypos": 99.8780517578125
        },
        "succeededByLayers": null,
        "succeededByModels": null,
        "layerType": {
          "id": 70,
          "name": "MaxPooling2D"
        }
          },
          {
        "id": 7,
        "name": "activation_2",
        "isInput": false,
        "isOutput": false,
        "isIntermediate": false,
        "coordinates": {
          "id": 8,
          "xpos": 1861.44921875,
          "ypos": 99.8780517578125
        },
        "succeededByLayers": null,
        "succeededByModels": null,
        "layerType": {
          "id": 15,
          "name": "Activation"
        }
          },
          {
        "id": 8,
        "name": "flatten_1",
        "isInput": false,
        "isOutput": false,
        "isIntermediate": false,
        "coordinates": {
          "id": 9,
          "xpos": 2151.32373046875,
          "ypos": 99.8780517578125
        },
        "succeededByLayers": null,
        "succeededByModels": null,
        "layerType": {
          "id": 54,
          "name": "Flatten"
        }
          },
          {
        "id": 9,
        "name": "dense_1",
        "isInput": false,
        "isOutput": false,
        "isIntermediate": false,
        "coordinates": {
          "id": 10,
          "xpos": 2505.89208984375,
          "ypos": 98.57888793945312
        },
        "succeededByLayers": null,
        "succeededByModels": null,
        "layerType": {
          "id": 6,
          "name": "Dense"
        }
          },
          {
        "id": 10,
        "name": "dropout_1",
        "isInput": false,
        "isOutput": false,
        "isIntermediate": false,
        "coordinates": {
          "id": 11,
          "xpos": 2828.763671875,
          "ypos": 99.8780517578125
        },
        "succeededByLayers": null,
        "succeededByModels": null,
        "layerType": {
          "id": 44,
          "name": "Dropout"
        }
          },
          {
        "id": 11,
        "name": "dense_2",
        "isInput": false,
        "isOutput": false,
        "isIntermediate": false,
        "coordinates": {
          "id": 12,
          "xpos": 3121.79052734375,
          "ypos": 99.8780517578125
        },
        "succeededByLayers": null,
        "succeededByModels": null,
        "layerType": {
          "id": 6,
          "name": "Dense"
        }
          },
          {
        "id": 12,
        "name": "dropout_2",
        "isInput": false,
        "isOutput": false,
        "isIntermediate": false,
        "coordinates": {
          "id": 13,
          "xpos": 3452.8017578125,
          "ypos": 99.8780517578125
        },
        "succeededByLayers": null,
        "succeededByModels": null,
        "layerType": {
          "id": 44,
          "name": "Dropout"
        }
          },
          {
        "id": 13,
        "name": "dense_3",
        "isInput": false,
        "isOutput": false,
        "isIntermediate": false,
        "coordinates": {
          "id": 14,
          "xpos": 3784.675048828125,
          "ypos": 99.8780517578125
        },
        "succeededByLayers": null,
        "succeededByModels": null,
        "layerType": {
          "id": 6,
          "name": "Dense"
        }
          }
        ],
        "modelConfiguration": {
          "id": 1,
          "name": "Modèle LeNet5",
          "creationDate": "2017-05-11T00:00:00+02:00",
          "saveURI": "./tests/scripts/sequential/models/model.json",
          "project": {
        "id": 1,
        "name": "LeNet5",
        "creationDate": "2017-10-22T00:00:00+02:00",
        "updateDate": "2017-10-23T00:00:00+02:00"
          }
        }
      }
    ]
就像你在上面看到的,这是我的模型。由于字段CONTANDLAYERS,您可以访问其中的图层列表,并且每个图层都有一个字段SUCEEDBYLAYERS,在这种情况下该字段不应为空(对于id 2)

这里的字段不是空的。我应该如何配置api以避免得到空字段。我还希望只得到一个层id数组,而不是实际的下一层。
我不知道我是否清楚,这是我的第一篇帖子。请不要犹豫,询问我更多信息。

你在JPA中被偷懒的关系抓住了。默认情况下,JHipster中的所有关系都是延迟加载的,这意味着除非您访问相关实体,否则不会获取它们。这就是为什么值是空的,除非您在使Hibernate获取相关对象的
System.out.println
调用中访问它们


要解决这个问题,您应该修改存储库并使用
@EntityGraph
,查看Spring数据JPA文档:

您被JPA中的延迟加载关系捕获了。默认情况下,JHipster中的所有关系都是延迟加载的,这意味着除非您访问相关实体,否则不会获取它们。这就是为什么值是空的,除非您在使Hibernate获取相关对象的
System.out.println
调用中访问它们


为了解决这个问题,您应该修改您的存储库并使用
@EntityGraph
,看看Spring数据JPA文档:

我真的怀疑您是否使用了这么旧的JHipster版本:1.8.5,当前版本是4.10.2是的,我犯了一个错误,我认为yo JHipster版本会给我它给我的版本,我的yoman版本。我的版本实际上是4.2.2我真的怀疑你是否使用了这么旧的JHipster版本:1.8.5,当前版本是4.10.2是的,我犯了一个错误,我认为yo JHipster版本会给我它给我的版本,我的yoman版本。我的版本实际上是4.2.2
        @GetMapping("/models/{id}")
        @Timed
        public ResponseEntity<Model> getModel(@PathVariable Long id) {
        log.debug("REST request to get Model : {}", id);
        Model model = modelRepository.findOneWithEagerRelationships(id);
        System.out.println("======================================================");
        // Layer layer = (Layer)model.getContainedLayers().toArray()[0];
        // System.out.println(((Layer)layer.getSucceededByLayers().toArray()[0]).getSucceededByLayers());
        System.out.println("=====================================================");
        return ResponseUtil.wrapOrNotFound(Optional.ofNullable(model));
        }
      {
                  "id": 1,
                  "name": "lenet",
                  "lossWeights": null,
                  "loss": "categorical_crossentropy",
                  "sampleWeightMode": null,
                  "isInput": false,
                  "isOutput": false,
                  "optimizer": {
                    "id": 1,
                    "optimizerType": {
                      "id": 5,
                      "name": "SGD"
                    }
                  },
                  "coordinates": {
                    "id": 1,
                    "xpos": 0,
                    "ypos": 0
                  },
                  "containedModels": [],
                  "succeededByModels": [],
                  "succeededByLayers": [],
                  "containedLayers": [
                    {
                      "id": 1,
                      "name": "input",
                      "isInput": true,
                      "isOutput": false,
                      "isIntermediate": false,
                      "coordinates": {
                    "id": 2,
                    "xpos": 78.376953125,
                    "ypos": 108.01763916015625
                      },
                      "succeededByLayers": [
                    {
                      "id": 2,
                      "name": "conv2d_1",
                      "isInput": false,
                      "isOutput": false,
                      "isIntermediate": false,
                      "coordinates": {
                        "id": 3,
                        "xpos": 341.5582275390625,
                        "ypos": 102.59124755859375
                      },
                      "succeededByLayers": [
                        {
                          "id": 3,
                          "name": "activation_1",
                          "isInput": false,
                          "isOutput": false,
                          "isIntermediate": false,
                          "coordinates": {
                        "id": 4,
                        "xpos": 623.73193359375,
                        "ypos": 99.8780517578125
                          },
                          "succeededByLayers": null,
                          "succeededByModels": null,
                          "layerType": {
                        "id": 15,
                        "name": "Activation"
                          }
                        }
                      ],
                      "succeededByModels": null,
                      "layerType": {
                        "id": 63,
                        "name": "Conv2D"
                      }
                    }
                      ],
                      "succeededByModels": null,
                      "layerType": {
                    "id": 43,
                    "name": "InputLayer"
                      }
                    },
                    {
                      "id": 2,
                      "name": "conv2d_1",
                      "isInput": false,
                      "isOutput": false,
                      "isIntermediate": false,
                      "coordinates": {
                    "id": 3,
                    "xpos": 341.5582275390625,
                    "ypos": 102.59124755859375
                      },
                      "succeededByLayers": null,
                      "succeededByModels": null,
                      "layerType": {
                    "id": 63,
                    "name": "Conv2D"
                      }
                    },
                    {
                      "id": 3,
                      "name": "activation_1",
                      "isInput": false,
                      "isOutput": false,
                      "isIntermediate": false,
                      "coordinates": {
                    "id": 4,
                    "xpos": 623.73193359375,
                    "ypos": 99.8780517578125
                      },
                      "succeededByLayers": null,
                      "succeededByModels": null,
                      "layerType": {
                    "id": 15,
                    "name": "Activation"
                      }
                    },
                    {
                      "id": 4,
                      "name": "max_pooling2d_1",
                      "isInput": false,
                      "isOutput": false,
                      "isIntermediate": false,
                      "coordinates": {
                    "id": 5,
                    "xpos": 941.17724609375,
                    "ypos": 102.59124755859375
                      },
                      "succeededByLayers": null,
                      "succeededByModels": null,
                      "layerType": {
                    "id": 70,
                    "name": "MaxPooling2D"
                      }
                    },
                    {
                      "id": 5,
                      "name": "conv2d_2",
                      "isInput": false,
                      "isOutput": false,
                      "isIntermediate": false,
                      "coordinates": {
                    "id": 6,
                    "xpos": 1253.1962890625,
                    "ypos": 99.8780517578125
                      },
                      "succeededByLayers": null,
                      "succeededByModels": null,
                      "layerType": {
                    "id": 63,
                    "name": "Conv2D"
                      }
                    },
                    {
                      "id": 6,
                      "name": "max_pooling2d_2",
                      "isInput": false,
                      "isOutput": false,
                      "isIntermediate": false,
                      "coordinates": {
                    "id": 7,
                    "xpos": 1540.2081298828125,
                    "ypos": 99.8780517578125
                      },
                      "succeededByLayers": null,
                      "succeededByModels": null,
                      "layerType": {
                    "id": 70,
                    "name": "MaxPooling2D"
                      }
                    },
                    {
                      "id": 7,
                      "name": "activation_2",
                      "isInput": false,
                      "isOutput": false,
                      "isIntermediate": false,
                      "coordinates": {
                    "id": 8,
                    "xpos": 1861.44921875,
                    "ypos": 99.8780517578125
                      },
                      "succeededByLayers": null,
                      "succeededByModels": null,
                      "layerType": {
                    "id": 15,
                    "name": "Activation"
                      }
                    },
                    {
                      "id": 8,
                      "name": "flatten_1",
                      "isInput": false,
                      "isOutput": false,
                      "isIntermediate": false,
                      "coordinates": {
                    "id": 9,
                    "xpos": 2151.32373046875,
                    "ypos": 99.8780517578125
                      },
                      "succeededByLayers": null,
                      "succeededByModels": null,
                      "layerType": {
                    "id": 54,
                    "name": "Flatten"
                      }
                    },
                    {
                      "id": 9,
                      "name": "dense_1",
                      "isInput": false,
                      "isOutput": false,
                      "isIntermediate": false,
                      "coordinates": {
                    "id": 10,
                    "xpos": 2505.89208984375,
                    "ypos": 98.57888793945312
                      },
                      "succeededByLayers": null,
                      "succeededByModels": null,
                      "layerType": {
                    "id": 6,
                    "name": "Dense"
                      }
                    },
                    {
                      "id": 10,
                      "name": "dropout_1",
                      "isInput": false,
                      "isOutput": false,
                      "isIntermediate": false,
                      "coordinates": {
                    "id": 11,
                    "xpos": 2828.763671875,
                    "ypos": 99.8780517578125
                      },
                      "succeededByLayers": null,
                      "succeededByModels": null,
                      "layerType": {
                    "id": 44,
                    "name": "Dropout"
                      }
                    },
                    {
                      "id": 11,
                      "name": "dense_2",
                      "isInput": false,
                      "isOutput": false,
                      "isIntermediate": false,
                      "coordinates": {
                    "id": 12,
                    "xpos": 3121.79052734375,
                    "ypos": 99.8780517578125
                      },
                      "succeededByLayers": null,
                      "succeededByModels": null,
                      "layerType": {
                    "id": 6,
                    "name": "Dense"
                      }
                    },
                    {
                      "id": 12,
                      "name": "dropout_2",
                      "isInput": false,
                      "isOutput": false,
                      "isIntermediate": false,
                      "coordinates": {
                    "id": 13,
                    "xpos": 3452.8017578125,
                    "ypos": 99.8780517578125
                      },
                      "succeededByLayers": null,
                      "succeededByModels": null,
                      "layerType": {
                    "id": 44,
                    "name": "Dropout"
                      }
                    },
                    {
                      "id": 13,
                      "name": "dense_3",
                      "isInput": false,
                      "isOutput": false,
                      "isIntermediate": false,
                      "coordinates": {
                    "id": 14,
                    "xpos": 3784.675048828125,
                    "ypos": 99.8780517578125
                      },
                      "succeededByLayers": null,
                      "succeededByModels": null,
                      "layerType": {
                    "id": 6,
                    "name": "Dense"
                      }
                    }
                  ],
                  "modelConfiguration": {
                    "id": 1,
                    "name": "Modèle LeNet5",
                    "creationDate": "2017-05-11T00:00:00+02:00",
                    "saveURI": "./tests/scripts/sequential/models/model.json",
                    "project": {
                      "id": 1,
                      "name": "LeNet5",
                      "creationDate": "2017-10-22T00:00:00+02:00",
                      "updateDate": "2017-10-23T00:00:00+02:00"
                    }
                  }
                }