使用JHipster过滤多对多关系时为Null

时间:2019-03-11 09:44:49

标签: jhipster

我在JHipster中进行过滤时遇到问题。

这是我的(相关) jhipster-jdl.jh 文件:

entity Exercise {
    name String required
}

entity Difficulty {
    name String required
}

entity Language {
    name String required
}

relationship ManyToMany {
    Exercise{language(name)} to Language
}

relationship ManyToOne {
    Exercise{difficulty} to Difficulty
}

filter Exercise

我使用JHipster生成了Springboot服务,但没有进行任何更改。

假设我有一个名为“测试”的练习,难度为“简单”,语言为“西班牙语”和“荷兰语”。

当我使用过滤器GET exercises查询name.equals=test端点时:

http://localhost:8080/myservice/api/exercises?nameId.equals=test

我得到这个答案:

[
    {
        "id" : 1000,
        "difficulty" : {
            "id": 5,
            "name": "easy"
        },
        "languages" : null,
        "name" : "test"
    }
]

如您所见,问题在于我无法直接访问与练习相关的语言。

请注意,difficulty字段没有问题,因为它是多对一关系。

数据库不是这些问题的来源,因为如果我使用练习的ID查询GET exercises/{id}端点,则:

http://localhost:8080/myservice/api/exercises/1000

我得到正确的结果:

{
    "id" : 1000,
    "difficulty" : {
        "id": 5,
        "name": "easy"
    },
    "languages" : [
        {
            "id" : 200,
            "name" : "spanish"
        },
        {
            "id" : 205,
            "name" : "dutch"
        }
    ],
    "name" : "test"
}

现在,让我们尝试使用过滤器GET exercises查询languageId.greaterOrEqualThan=200端点(为示例起见):

http://localhost:8080/myservice/api/exercises?languageId.greaterOrEqualThan=200

那么响应将是:

[
    {
        "id" : 1000,
        "difficulty" : {
            "id": 5,
            "name": "easy"
        },
        "languages" : null,
        "name" : "test"
    },
    {
        "id" : 1000,
        "difficulty" : {
            "id": 5,
            "name": "easy"
        },
        "languages" : null,
        "name" : "test"
    }
]

请注意,该练习进行了两次(如果我有n种语言满足约束,则进行n次),这是有问题的。

我觉得JHipster生成器中的某些内容已损坏,但似乎不太可能,因为我没有发现任何人在谈论这个非常严重的问题。

在生成JHipster项目时我做错什么了吗?还是真正的问题?

请随时询问其他任何代码,我不确定有什么意义。谢谢。

注意:我注意到languages字段的运动端点过滤器使用单数(例如language.equals),我不知道这对于多对多关系是否正常。 / p>

0 个答案:

没有答案