У меня проблема с Thymeleaf "forEach" и проектом Lombok в весеннем загрузочном проекте.
Если я буду генерировать геттеры и сеттеры, то все будет работать правильно. В случае, когда я использую аннотации 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>