У меня проблема с проектом Thymeleaf "forEach" и Lombok в проекте весенней загрузки. Если я буду генерировать геттеры и сеттеры, то все работает правильно. В случае, если я использую аннотации ломбока, я получаю следующее исключение:
EL1008E: свойство или поле 'firstName' не может быть найдено в объекте типа 'pl.codol.hibernate.model.CustomerEntity' - возможно, не общедоступно или недействительно?
Есть у кого-нибудь идеи, что может быть не так? Прочитал другие темы, но они не помогли мне решить мою проблему.
Мой класс POJO:
@Data // I also used @Getter and @Setter, doesn't work
@NoArgsConstructor
@Entity
@Table(name = "CUSTOMER")
public class CustomerEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "CUSTOMER_ID")
private Long id;
@Column(name = "FIRST_NAME")
private String firstName;
@Column(name = "LAST_NAME")
private String lastName;
@Column(name = "EMAIL")
private String email;
@Override
public String toString() {
return "CustomerEntity{" +
"id=" + id +
", firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
", email='" + email + '\'' +
'}';
}
}
Контроллер:
@Controller
@RequestMapping("/customer")
public class CustomerController {
private CustomerService customerService;
@Autowired
public CustomerController(CustomerService customerService) {
this.customerService = customerService;
}
@RequestMapping("/list")
public String listCustomers(Model model) {
List<CustomerEntity> allCustomers = customerService.findAllCustomers();
model.addAttribute("customers", allCustomers);
return "list-customers";
}
}
Часть html-файла, вызывающая проблему:
<th:block th:each="customer : ${customers}">
<tr>
<td th:text="${customer.firstName}">...</td>
<td th:text="${customer.lastName}">...</td>
<td th:text="${customer.email}">...</td>
</tr>
</th:block>