【发布时间】:2023-03-17 12:15:01
【问题描述】:
我正在使用一个外部服务,该服务发布到我的应用程序中的一个端点,我有一个@RequestBody CalloutRequest calloutRequest,我将请求正文映射到类CalloutRequest。
作为 CalloutRequest 的一部分,有一个名为 userAttributes 的字段,在我的课堂上看起来像这样:
@Lob
private HashMap<String, List<String>> userAttributes;
我用@Lob 对其进行了注释,因为我没有可以将其映射到的类,因为它的性质相当复杂。因此这个HashMap。以 JSON 格式显示 userAttributes 的示例:
"userAttributes": {
"lastName": [
"Guy"
],
"ExternalId": [
"d9a59407-2bca-46aa-8641-3350fd95bcd1"
],
"distinguishedName": [
"CN=t2-contractor9,DC=company,DC=com"
],
"employeeID": [],
"userName": [
"t2-contractor9@company.com"
],
"groupNames": [
"ALL USERS",
"T2-Contractor@company.com"
],
"firstName": [
"T2-Contractor"
],
"UserStore": [],
"phone": [],
"domain": [
"company.com"
],
"disabled": [
"false"
],
"email": [
"t2-contractor9@company.com"
]
}
我的挑战是我想为特定的用户名构建一个查询 - userAttributes.userName - 但鉴于这是存储为 BLOB 的事实,我无法弄清楚如何 - 或者如果可能的话 - 编写这样一个查询。
现在我只是使用 Spring Data JPA 和它的存储库实现,但我想知道这是否可以通过自定义 @Query 或使用 querydsl 来实现?
我的理解是否正确,如果我能找到一种方法将上述 HashMap 映射到一个实际的类中,我可以使用它来序列化/反序列化并在 CalloutRequest 和这个新类之间建立一个映射,我可以构建一个 JPQL将使用连接来实现我所追求的查询?
【问题讨论】:
标签: hibernate jpa spring-data-jpa jpql querydsl