如何将嵌套的 Json 对象值访问到 JPA 实体 Class

How to access nested Json Object Value into JPA Entity Class

我有这样的负载

{
    "eventId":"ep9_0579af51",
    "eventTime":"5/11/2022 5:50:58 PM",
    "eventType":"UpdateTransaction",
    "meta":{
        "userId":"vkp",
        "resourceType":"Transaction/DataDocs"
    }
}

我需要将这个 json 字段映射到单个实体 class 。

@PostMapping(path = "/id", consumes = "application/json") 
public ResponseEntity<ImportTrans> import(@RequestBody ImportTrans importTrans) {
    return ResponseEntity.of(Optional.ofNullable(repository.save(importTrans););
}
@Table(name = "IMPORT_TRANS")
@Entity
public class ImportTrans implements Serializable {
    @Id
    private Long processId;// AutoGenerator
    private String eventId;
    private Date eventTime;
    private String eventType;

    private String userId; // I dont want create new class for meta . Is there any way i 
    //can access meta.userId in ImportTrans class.
    private String resourceType;
}

如何在不为其创建单独的 class 的情况下从 ImportTrans 访问来自 meta 的数据?

您应该在到达控制器之前修改您的请求正文。

"You must consider the application performance factors on your own before implementation"

选项 1. 使用 RequestBodyAdvice。

选项 2. 使用 Spring HandlerInterceptor。

方案3.使用AOP

选项 4. 使用 HTTP 过滤器。


以下解决方案仅在您使用单独的 DTO 时有效 class。

private Map<String, String> meta = new HashMap<>();

String userID = importTrans.getMeta().get("userId");

希望以上信息能解答您的问题。