У меня проблема с фильтрацией в 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
), я не знаю, нормально ли это для отношения многие ко многим.