Форум программистов, компьютерный форум, киберфорум
Java: Spring, Spring Boot
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 29.09.2018
Сообщений: 20

Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemExc­eption: Error accessing field

09.02.2020, 22:38. Показов 4621. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, читаю книгу Spring in action 5th edition и столкнулся с такой проблемой:
Java
1
2
3
4
5
6
7
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemException: Error accessing field [private final java.lang.String org.server.models.Ingredient.id] by reflection for persistent property [org.server.models.Ingredient#id] : GRBF; nested exception is org.hibernate.property.access.spi.PropertyAccessException: Error accessing field [private final java.lang.String org.server.models.Ingredient.id] by reflection for persistent property [org.server.models.Ingredient#id] : GRBF
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Ошибка появляется когда пытась сохранить taco entity в базу данных.
Вот классы с моими entity.
Ingredient:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Data
@RequiredArgsConstructor
@NoArgsConstructor(access = AccessLevel.PRIVATE, force = true)
@Entity
public class Ingredient {
 
    @Id
    @Column(columnDefinition = "String", name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private final String id;
    private final String name;
    @Enumerated(EnumType.STRING)
    private final Type type;
 
    public static enum Type{
        WRAP, PROTEIN, VEGGIES, CHEESE, SAUCE
    }
 
}
Taco:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Data
@Entity
@Table(name = "taco", schema = "public")
public class Taco {
 
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private Date createdAt;
    @NotNull
    @Size(min = 3, message="Name must be at least 3 characters long")
    private String name;
    @ManyToMany(targetEntity = Ingredient.class)
    @Size(min=1, message="You must choose at least 1 ingredient")
    private List<String> ingredients;
 
    @PrePersist
    void createdAt(){
        this.createdAt = new Date();
    }
 
}
Контроллер выглядит следующим образом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
@Controller
@RequestMapping("/design")
@SessionAttributes("order")
public class DesignTacoController {
 
    private final IngredientRepository ingredientRepository;
    private final TacoRepository tacoRepository;
 
    @Autowired
    public DesignTacoController(IngredientRepository ingredientRepository, TacoRepository tacoRepository) {
        this.ingredientRepository = ingredientRepository;
        this.tacoRepository = tacoRepository;
    }
 
    @ModelAttribute(name = "order")
    public Order order(){
        return new Order();
    }
 
    @GetMapping
    public String showDesignForm(Model model){
        List<Ingredient> ingredients = new ArrayList<>();
        ingredientRepository.findAll().forEach(i -> ingredients.add(i));
 
        Type[] types = Ingredient.Type.values();
        for (Type type : types){
            model.addAttribute(type.toString().toLowerCase(),
                    filterByType(ingredients, type));
        }
        return "welcomePage";
    }
 
    private List<Ingredient> filterByType(List<Ingredient> ingredients, Type type) {
        return ingredients
                .stream()
                .filter(x -> x.getType().equals(type))
                .collect(Collectors.toList());
    }
 
    @ModelAttribute(name = "taco")
    public Taco taco(){
        return new Taco();
    }
 
    @PostMapping
    public String processDesign(@Valid Taco taco, Errors errors, @ModelAttribute Order order){
        if(errors.hasErrors()) {
            return "welcomePage";
        }
        Taco saved = tacoRepository.save(taco);
        order.addDesign(saved);
        return "redirect:/orders/current";
    }
}
Может кто-то сталкивался с такой ошибкой и знает в чем проблема?
Заранее спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.02.2020, 22:38
Ответы с готовыми решениями:

Ошибка org.hibernate.property.access.spi.PropertyAccessException: Error accessing field
Не понимаю в чем ошибка. Идея в том что бы просто что бы взаимодействовать с базой данных. JAVA+BootSpring+hibernate+PostGreSQL ...

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointe
Я пытаюсь добавить запись в таблицы но при этом выбивает ошибку NullPointerException. SEVERE ...

Handler processing failed; nested exception is java.lang.NoSuchMethodError
public class CreateProductDTO { @NotEmpty private String name; @NotEmpty private String category; @NotEmpty private...

4
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
09.02.2020, 23:37
ну например final убери из энтити
0
0 / 0 / 0
Регистрация: 29.09.2018
Сообщений: 20
09.02.2020, 23:54  [ТС]
Убирал, все равно таже ошибка только без final
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
10.02.2020, 09:35
Конструктор ещё нужен без параметров
0
0 / 0 / 0
Регистрация: 29.09.2018
Сообщений: 20
11.02.2020, 23:14  [ТС]
Ошибку помогло решить изменив Taco класс:
Java
1
private List<String> ingredients; на private List<Ingredient> ingredients;
добавил converter, потому, что thymeleaf возвращает String для List<Ingredient> ingredients:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Component
public class IngredientByIdConverter implements Converter<String, Ingredient>{
 
    private final IngredientRepository ingredientRepo;
 
    @Autowired
    public IngredientByIdConverter(IngredientRepository ingredientRepo) {
        this.ingredientRepo = ingredientRepo;
    }
 
    @Override
    public Ingredient convert(String id) {
        Optional<Ingredient> optionalIngredient = ingredientRepo.findById(id);
        return optionalIngredient.isPresent() ?
                optionalIngredient.get() : null;
    }
 
}
и добавив этот converter в config class:
Java
1
2
3
4
5
6
7
 @Autowired
    private IngredientRepository ingredientRepository;
 
    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new IngredientByIdConverter(ingredientRepository));
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.02.2020, 23:14
Помогаю со студенческими работами здесь

Required request body is missing: public org.springframework
Т.к. ответить на мой вопрос как отправить массив из Локал сторидж не смогли ни...

Hibernate + Spring HTTP Status 500 - Request processing failed
Добрый день. Время от времени появляется ошибка при попытке получить данные из базы БД(postgres).То получается ошибка, то нет ошибки, не...

ASP отказывается работать: The server has encountered an error while loading an application during the processing of your request...
Windows 2000 Advanced Server + IIS. Всё вроде включено и настроено а пишет: Server Application Error The server has encountered an...

An error occurred while processing your request. Выходит при попытке открытия документов на вебморде
Доброго времени суток уважаемые коллеги! Вопрос по теме Lotus Notes 8.5. Возникла такая проблема - An error occurred while processing your...

Import org.springframework.security.access.prepost.PreAuthorize;
dependency в каком релизе &lt;spring.version&gt; 3.2.4.RELEASE&lt;/spring.version&gt; - нету ничего не понимаю, такое чувство, что он вообще...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru