我在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>