【发布时间】:2018-01-27 04:40:15
【问题描述】:
我目前正在使用带有 Spring Data JPA 的 Spring Boot 来连接到 Oracle 数据库。使用一个参数,我只使用 Spring Repository findById(Long id); 并且效果很好。另一方面,搜索对我来说要复杂得多。在我们的例子中,用户提供了一个带有多个可选搜索参数的嵌套 JSON 对象(此时我无法更改他们必须通过嵌套 JSON 发送数据的方式)。下面是 JSON 输入对象的样子:
{
"agent_filter": {
"first_name": "string",
"last_name": "string",
"agentNumber": "string",
"agentCode": "string"
},
"account": "string",
"status": "string",
"paid": "string",
"amount": "string",
"person_filter": {
"date_of_birth": "string",
"first_name": "string",
"last_name": "string",
"tax_id": "string"
}
}
所有搜索条件都是可选的(至少1个参数除外)
在后端,我们有以下实体:
@Entity
Account{
@OneToMany
List<PersonRole> role;
@OneToMany
List<AgentRole> role;
}
@Entity
PersonRole{
String role;
Person person;
}
@Entity
AgentRole{
String role;
Agent agent;
}
@Entity
Person{...}
@Entity
Agent{...}
因此,为了提供搜索功能,我可以进行多个连接。我开始使用带有 @Query 表示法的 JPQL,但我必须对每个参数进行 is null or 检查,这真是一团糟。我开始研究其他选项,并且看到了有关 QueryDSL、标准、规范的内容,但我不确定应该关注和学习哪一个。不幸的是,我对这个主题知之甚少,我希望有人能指出我正确的方向,以便很好地实施这个搜索。谢谢!
【问题讨论】:
标签: java json spring hibernate jpa