java - Spring Boot - 使用 Lombok 时,Rest Controller 返回空对象
问题描述
我正在使用 Spring Boot 2.1.4 和Gradle 5.0
. 我Lombok v1.18.6
用来构建我的类,但是当我调用服务时,我收到一个空对象
我尝试手动添加 getter 和 setter 方法并解决了问题,但我想知道为什么lombok
在我的项目中不起作用。
此外,我的 IDE 正在正确识别 lombok 插件。我正在使用 IntelliJ IDEA
我的梯度依赖:
compileOnly 'org.projectlombok:lombok:1.18.6'
annotationProcessor 'org.projectlombok:lombok:1.18.6'
我的模型课:
@Entity
@Data
public class Category implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id_category")
private int idCategory;
@NotBlank
private String name;
@OneToMany(mappedBy = "category", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
private List<Language> languages;
}
我的休息控制器:
@RestController
@RequestMapping("/categories")
public class CategoryController {
@Autowired
private CategoryService categoryService;
@GetMapping
public ResponseEntity<List<Category>> findAllCategories(){
List<Category> categories = categoryService.findAll();
return new ResponseEntity<List<Category>>(categories, HttpStatus.OK);
}
}
我收到此回复:
[
{
"languages": []
}
]
但我期望收到的是:
[
{
"idCategory": 1,
"name": "Backend"
"languages": []
}
]
实际上,我发现唯一显示的属性是languages
具有@JsonProperty
注释的属性,这很奇怪,为什么会发生这种情况?
更新
我刚刚意识到我的 IDE(IntelliJ)正在识别 lombok 插件,并且我还启用了注释处理,但是当我尝试使用 getter 或 setter 执行我的代码时,它会引发错误:
Error:(18, 26) java: cannot find symbol
symbol: method setName(java.lang.String)
location: class com.ramonparis.cvmanager.model.Category
解决方案
它可能对您不起作用的原因是,如果您的项目未设置为将 IDE 构建委托给 Gradle,并且未为该项目启用注释处理,或者以某种方式配置错误。
Settings -> Build, Execution, Deployment -> Build Tools - Gradle -> Runner
Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors
您是否尝试过从命令行使用 Gradle 构建和运行,以排除 IntelliJ 中的错误配置?
推荐阅读
- c++ - 链接列表插入代码没有给出任何输出
- android - 阻止 adb 发现网络调试 android 设备
- django - 具有多个模型和不常见搜索字段的 DRF SearchFilter
- java - Spring security UsernamePasswordAuthenticationToken 始终返回 403:用户凭据已过期
- linux - 安装登录屏幕主题时 SDDM 崩溃
- java - 用于转换 Java 对象字段的设计模式
- delphi - 为什么我的 .dfm 文件中存储了 Text = ''?默认情况下,不应存储空字符串
- python - Dask 连接高内存使用
- c# - Blazor webassembly access-control-allow-origin 错误和 Google API
- javascript - 如何区分 Microsoft 文件类型和 base64 字符串?