Я обновлялся с весны 1.5 до 2 и столкнулся с этой проблемой. У меня есть следующие два контроллера с их дао. Один сохраняет в базу данных нормально, а другой нет. Весь мой конфиг это по умолчанию весна.
// UPDATE ITEM
@PreAuthorize("hasRole('ADMIN')")
@RequestMapping("/updateitem")
public String saveItem(Items item, BindingResult result) {
if (result.hasErrors()) {
return "error";
}
try {
itemsService.createOrUpdate(item);
} catch (DuplicateKeyException e) {
System.out.println(e);
return "error";
}
String url = "redirect:/menu/items?iditems=" + item.getIditems();
return url;
}
@PreAuthorize("hasRole('ADMIN')")
@RequestMapping("/newextra")
public String newExtra(Items item, Extras extras, BindingResult result) {
if (result.hasErrors()) {
return "error";
}
try {
extrasService.createOrUpdate(extras);
} catch (DuplicateKeyException e) {
System.out.println(e);
return "error";
}
String url = "redirect:/menu/items?iditems=" + item.getIditems();
return url;
}
// CREATE OR UPDATE ITEM
@PreAuthorize("hasRole('ADMIN')")
public void createOrUpdate(Items items) {
Session session = entityManagerFactory.unwrap(SessionFactory.class).openSession();
session.unwrap(Session.class).save(items);
}
@PreAuthorize("hasRole('ADMIN')")
public void createOrUpdate(Extras extras) {
Session session = entityManagerFactory.unwrap(SessionFactory.class).openSession();
session.unwrap(Session.class).save(extras);
}
ITEM LOG
2019-01-08 10:10:43.023 DEBUG 10228 --- [nio-8090-exec-1] o.s.web.servlet.DispatcherServlet : POST "/updateitem", parameters={masked}
2019-01-08 10:10:43.024 DEBUG 10228 --- [nio-8090-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public java.lang.String com.paphos.pos.controller.MenuController.updateItem(com.paphos.pos.items.Items,org.springframework.validation.BindingResult)
Hibernate: select itemsextra0_.iditemsextrascat as iditemse1_9_, itemsextra0_.idextrascat as idextras2_9_, itemsextra0_.iditems as iditems3_9_ from itemsextrascat itemsextra0_ where itemsextra0_.iditems=0 order by itemsextra0_.idextrascat asc
Hibernate: select categories_.idcategories, categories_.name as name2_3_ from categories categories_ where categories_.idcategories=?
Hibernate: insert into items (idcategories, description, hidden, name, price, upc) values (?, ?, ?, ?, ?, ?)
2019-01-08 10:10:43.054 DEBUG 10228 --- [nio-8090-exec-1] o.s.web.servlet.DispatcherServlet : Completed 302 FOUND
EXTRAS LOG
2019-01-08 09:54:24.316 DEBUG 10228 --- [nio-8090-exec-4] o.s.web.servlet.DispatcherServlet : POST "/newextra", parameters={masked}
2019-01-08 09:54:24.316 DEBUG 10228 --- [nio-8090-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public java.lang.String com.paphos.pos.controller.MenuController.newExtra(com.paphos.pos.items.Items,com.paphos.pos.extras.Extras,org.springframework.validation.BindingResult)
Hibernate: select extrascat_.idextrascat, extrascat_.description as descript2_7_, extrascat_.name as name3_7_ from extrascat extrascat_ where extrascat_.idextrascat=?
2019-01-08 09:54:24.356 DEBUG 10228 --- [nio-8090-exec-4] o.s.web.servlet.DispatcherServlet : Completed 302 FOUND
Создание новых предметов работает, но создание новых дополнений - нет. Он запускает запрос на выборку таблицы, но ничего не вставляет. Есть идеи? Я считаю, что это может иметь отношение к транзакциям. У меня есть занятия с @Transactional из весенних рамок.
UPDATE
Я получаю ошибку транзакции при попытке запустить удаление.
javax.persistence.TransactionRequiredException: при выполнении запроса на обновление / удаление, но, просматривая мои журналы, мой менеджер транзакций работает