[BUG] 实体类使用了Lombok 的 @SuperBuilder 和 @Jacksonized 注解时,反序列化会失败
- Dominant language
- Java
- Stars
- 4.4k
- Forks
- 613
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 6
Description
### 问题描述
实体类使用了Lombok 的 @SuperBuilder 和 @Jacksonized 注解时,反序列化会失败
### 环境信息
*请填写以下信息:*
- OS信息: [ MacOS 16G i5]
- JDK信息: [JDK8]
- 版本信息:[2.0.51]
### 重现步骤
*如何操作可以重现该问题:*
1. 运行 main 方法,当没有使用 Jacksonized 注解时,代码运行成功
2. 当打开 Jacksonized 注解时,main 方法运行失败
```java
@SuperBuilder
@NoArgsConstructor
@Setter
@Getter
public class SuperRequest {
protected String base;
@SuperBuilder
@NoArgsConstructor
// @Jacksonized
@Setter
@Getter
public static class DemoRequest extends SuperRequest {
private String name;
}
public static void main(String[] args) {
DemoRequest demoRequest = JSON.parseObject("{\"name\":\"test\",\"base\":\"test\"}", DemoRequest.class);
Assertions.assertThat(demoRequest.getName()).isEqualTo("test");
Assertions.assertThat(demoRequest.getBase()).isEqualTo("test");
}
}
```
```xml
org.projectlombok
lombok
com.fasterxml.jackson.core
jackson-databind
com.alibaba.fastjson2
fastjson2
org.assertj
assertj-core
```
### 期待的正确结果
最低期望:实体类使用 Jacksonized 也能序列化成功。
最高期望:实体类应当能够仅通过使用 SuperBuilder 和 Jacksonized 实现序列化,无需额外添加 NoArgsConstructor 和 Setter 注解。
### 相关日志输出
*请复制并粘贴任何相关的日志输出。*
#### 附加信息
*如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。*
Contributor guide
Research direction
Start by running the main method with DemoRequest and compare deserialization with and without @Jacksonized. Trace the deserialization path for the Lombok-generated @SuperBuilder type, then verify that the expected name and base values are populated without requiring extra annotations.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100