java - Spring boot 的 Arango Edge 创建错误

标签 java spring spring-boot arangodb

我正在使用 ArangoDb 创建一个项目用于我的研究。这是一个带有Spring boot的后端项目。我正在关注这里的教程:

https://github.com/arangodb/spring-data-demo

一切都很顺利,但是当我尝试使用“Character”类创建 Controller 时。我收到此错误: java.lang.StackOverflowError:null

经过进一步检查,我发现是 child 和 parent 的映射造成了这个问题。 在一个单独的项目中,我创建了一个基本的 POJO(零件类),其具有基本属性,例如名称、id 和类似于角色类中的“childs”的 childPart 集合。我完成了所有映射(包括边和所有)并创建了关系。然后,如果我有两个零件对象:P1 和 P2,并且我将 P2 设为 P1 的子零件。 JSON 响应出现时,P2 作为 P1 的子级,然后 P1 作为 P2 的子级,再次 P2 作为 P1 的子级,如此循环往复。它是一个无限循环。早些时候我以为我的实现存在一些问题,但是当我下载演示代码时。它也有同样的问题。 如果有办法解决这个问题或者我错过了什么,请告诉我。

教程代码的 postman 响应实际上是一个无限循环。像这样的事情:

[
    {
        "id": "424543",
        "name": "Sansa",
        "surname": "Stark",
        "alive": true,
        "age": 13,
        "childs": [
            {
                "id": "424594",
                "name": "Ned",
                "surname": "Stark",
                "alive": false,
                "age": 41,
                "childs": [
                    {
                        "id": "424606",
                        "name": "Robb",
                        "surname": "Stark",
                        "alive": false,
                        "age": null,
                        "childs": [
                            {
                                "id": "424594",
                                "name": "Ned",
                                "surname": "Stark",
                                "alive": false,
                                "age": 41,
                                "childs": [
                                    {
                                        "id": "424606",
                                        "name": "Robb",
                                        "surname": "Stark",
                                        "alive": false,
                                        "age": null,
                                        "childs": [
                                            {
                                                "id": "424594",
                                                "name": "Ned",
                                                "surname": "Stark",
                                                "alive": false,
                                                "age": 41,
                                                "childs": [
                                                    {   

最佳答案

注释@Ref@Relations@To@From允许设置字段boolean lazy,指定实体是否应该延迟加载。根据您对实体进行建模的方式以及您使用的上述注释,我认为您可以解决其中之一中设置 lazy = true 的问题。

关于java - Spring boot 的 Arango Edge 创建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418513/

相关文章:

java - 在 Couchbase 中调用删除文档(带分页)时的 Spring Data "TimeoutException"

jpa - Spring Boot 和 FlywayTest 导致 JPA Camel 路由在数据库重置期间抛出异常

java - 为什么 EvaluatorFilter 不过滤不匹配的语句?

java - Libgdx 表组件未正确显示

Spring Cloud Data Flow 流无法部署在 Kubernetes 中

java - 关于 docker 上的多个 springboot 服务实例可访问性

java - JDOM:将内容转换为文档

java - 如何删除静态资源的 Orchestra session 上下文参数?

java - Spring - 如果存在主 bean,则不要创建 bean

java - SPRING MVC数据库jdbc错误