Null при фильтрации отношений «многие ко многим» с JHipster - PullRequest
2 голосов
/ 11 марта 2019

У меня проблема с фильтрацией в 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

Я создал SpringbootСлужба с JHipster и ничего не изменилось.

Допустим, у меня есть упражнение под названием «тест» с трудностью «легко» и языки «испанский» и «голландский».

Когда я запрашиваю конечную точку 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 нет проблем, потому что это отношение многие-к-одному.

База данных не является источником этих проблем , потому что, если я запрашиваю конечную точку 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

Тогда tОтвет будет таким:

[
    {
        "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), я не знаю, нормально ли это для отношения многие ко многим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...