Я занимаюсь разработкой простого API отдыха с Spring Boot 2.1.4 и Gradle 5.0
. Я использую Lombok v1.18.6
для создания своих классов, но когда я вызываю сервисы, я получаю пустой объект
Я попытался добавить методы получения и установки вручную, и это устранило проблему, но я хотел бы знать, почему lombok
не работает в моем проекте.
Кроме того, моя среда IDE правильно определяет подключение lombok. Я использую IntelliJ IDEA
Моя зависимость от gradle:
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:
@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
, почему это происходит?
UPDATE
Я только что понял, что моя IDE (IntelliJ) распознает подключение lombok, и у меня также включена обработка аннотаций, но когда я пытаюсь выполнить мой код с помощью геттера или установщика, он выдает ошибку:
Error:(18, 26) java: cannot find symbol
symbol: method setName(java.lang.String)
location: class com.ramonparis.cvmanager.model.Category