Spring boot: Cannot resolve method 'builder' in 'Product'

1k Views Asked by At

I have used @builder anotation of lombok in Product class. But when I use Product.builder(), it's not work. Also, the getter and setter are cannot resolve. I have tried to downgrade some lombok versions, still not working.

This is my code in ProductService:

package dev.beyondnguyen.productservice.service;

import dev.beyondnguyen.productservice.dto.ProductRequest;
import dev.beyondnguyen.productservice.model.Product;
import dev.beyondnguyen.productservice.repository.ProductRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;
    public void createProduct(ProductRequest productRequest) {
        Product product = Product.builder()
                .name(productRequest.getName())
                .description(productRequest.getDescription())
                .price(productRequest.getPrice())
                .build();

        productRepository.save(product);
        log.info("Product {} is saved", product.getId());
    }

}

And the code in Product class:

package dev.beyondnguyen.productservice.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.math.BigDecimal;

@Document(collection = "products")
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class Product {
    @Id
    private String id;
    private String name;
    private String description;
    private BigDecimal price;
}

What is happening? How can I fix it?

3

There are 3 best solutions below

0
Andrei Lisa On

It can be a problem in your, maven/gradle dependency that you import. Be sure, that project lombok dependency is imported as

Gradle:

compileOnly group: 'org.projectlombok', name: 'lombok', version: 'yourVersionOfLombok'

annotationProcessor 'org.projectlombok:lombok:yourVersionOfLombok'

Maven:

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>yourVersionOfLombok</version>
<scope>provided</scope>
               <annotationProcessorPaths>
                <path>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok</artifactId>
                    <version yourVersionOfLombok</version>
                </path>                         
            </annotationProcessorPaths>

Something like this. Let me know if it help you.

0
Anh Tester On

If you use IntelliJ IDEA, you need to install the Lombok plugin so it can understand the annotations of the Lombok library (Gradle/Maven) for your project.

0
Octavian On

I was able to resolve this by downloading the Lombok plugin in my IntelliJ IDEA.

You can find more information on this on this article:

solution-for-the-roblem-cannot-resolve-method-builder-in-spring-boot-with-lombok