Пружинная загрузка
модель:
@Entity
@Table(name = "usr") // PostgreSQL not work with table "user"
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@NotNull
private String username;
@NotNull
private String password;
@NotNull
private boolean active;
@NotNull
@ElementCollection(targetClass = Role.class, fetch = FetchType.EAGER)
@Column(name = "role", nullable = false)
@CollectionTable(name = "user_roles", joinColumns = @JoinColumn(name = "user_id"))
@Enumerated(EnumType.STRING)
private Set<Role> roles;
@NotNull
@DateTimeFormat(pattern = "dd.MM.yyyy HH:mm:ss")
private Date created;
@DateTimeFormat(pattern = "dd.MM.yyyy HH:mm:ss")
private Date updated;
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER,
cascade = CascadeType.ALL)
private Set<Orders> orders;
@Entity
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@NotNull
private String name;
private String description;
@NotNull
@DateTimeFormat(pattern = "dd.MM.yyyy HH:mm:ss")
private Date created;
@DateTimeFormat(pattern = "dd.MM.yyyy HH:mm:ss")
private Date updated;
@OneToOne(fetch = FetchType.EAGER,
cascade = CascadeType.ALL,
mappedBy = "category")
private Orders orders;
@Entity
public class Orders {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@NotNull
private String name;
private String description;
@NotNull
@DateTimeFormat(pattern = "dd.MM.yyyy HH:mm:ss")
private Date created;
@DateTimeFormat(pattern = "dd.MM.yyyy HH:mm:ss")
private Date updated;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "category_id")
private Category category;
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "user_id", nullable = false)
private User user;
здесь мой заказ репо:
public interface OrderRepository extends CrudRepository<Orders, Integer> {
// Spring Data - use JPQL -> generate SQL query on runtime
public List<Orders> findByName(String name);
public List<Orders> findByNameOrderById(String name);
public List<Orders> findByUser(User user);
}
здесь контроллер:
@org.springframework.stereotype.Controller
public class OrdersController {
@Value("${spring.application.name}")
private String appName;
@Autowired
private UserRepository userRepository;
@Autowired
private OrderRepository orderRepository;
@Autowired
private CategoryRepository categoryRepository;
private User currentUser;
private static Logger logger = LogManager.getLogger(OrdersController.class);
@GetMapping("/orders")
public String getAllOrders(Model model) {
currentUser = userRepository.findByUsername(UserService.getCurrentUserName());
List<Orders> orders = orderRepository.findByUser(currentUser);
model.addAttribute("ordersList", orders);
model.addAttribute("appName", appName);
return "orders";
}
@RequestMapping("order/add")
public String addOrder(Model model) {
logger.info("addOrder,categoriesList = " + categoryRepository.findAll());
model.addAttribute("isAdd", true);
model.addAttribute("order", new Orders());
model.addAttribute("title", "Add Order");
model.addAttribute("viewMode", ViewMode.ADD);
model.addAttribute("categoriesList", categoryRepository.findAll());
return "order";
}
@RequestMapping("order/delete/{id}")
public String deleteOrder(@PathVariable("id") int orderId) {
orderRepository.deleteById(orderId);
logger.info("success_delete_orderId = " + orderId);
//notifyByEmail(NotifyActionEnum.ORDER_DELETE, orderId);
return "redirect:/orders";
}
Я могу Успешное добавление и редактирование заказа. По удалению не работает. Метод успешного вызова deleteOrder
, успешный вывод:
success_delete_orderId
, но порядок не удаляется из базы данных db
здесь: db log:
[DEBUG] 2020-03-14 15:22:47.409 [http-nio-8090-exec-9] SQL - select orders0_.id as id1_1_0_, orders0_.category_id as category6_1_0_, orders0_.created as created2_1_0_, orders0_.description as descript3_1_0_, orders0_.name as name4_1_0_, orders0_.updated as updated5_1_0_, orders0_.user_id as user_id7_1_0_, user1_.id as id1_3_1_, user1_.active as active2_3_1_, user1_.created as created3_3_1_, user1_.password as password4_3_1_, user1_.updated as updated5_3_1_, user1_.username as username6_3_1_, roles2_.user_id as user_id1_2_2_, roles2_.role as role2_2_2_ from orders orders0_ inner join usr user1_ on orders0_.user_id=user1_.id left outer join user_roles roles2_ on user1_.id=roles2_.user_id where orders0_.id=?
[DEBUG] 2020-03-14 15:22:47.410 [http-nio-8090-exec-9] SQL - select orders0_.user_id as user_id7_1_0_, orders0_.id as id1_1_0_, orders0_.id as id1_1_1_, orders0_.category_id as category6_1_1_, orders0_.created as created2_1_1_, orders0_.description as descript3_1_1_, orders0_.name as name4_1_1_, orders0_.updated as updated5_1_1_, orders0_.user_id as user_id7_1_1_ from orders orders0_ where orders0_.user_id=?
[INFO ] 2020-03-14 15:22:47.411 [http-nio-8090-exec-9] OrdersController - success_delete_orderId = 98
[DEBUG] 2020-03-14 15:22:47.417 [http-nio-8090-exec-10] SQL - select user0_.id as id1_3_, user0_.active as active2_3_, user0_.created as created3_3_, user0_.password as password4_3_, user0_.updated as updated5_3_, user0_.username as username6_3_ from usr user0_ where user0_.username=?
[DEBUG] 2020-03-14 15:22:47.418 [http-nio-8090-exec-10] SQL - select roles0_.user_id as user_id1_2_0_, roles0_.role as role2_2_0_ from user_roles roles0_ where roles0_.user_id=?
[DEBUG] 2020-03-14 15:22:47.418 [http-nio-8090-exec-10] SQL - select orders0_.user_id as user_id7_1_0_, orders0_.id as id1_1_0_, orders0_.id as id1_1_1_, orders0_.category_id as category6_1_1_, orders0_.created as created2_1_1_, orders0_.description as descript3_1_1_, orders0_.name as name4_1_1_, orders0_.updated as updated5_1_1_, orders0_.user_id as user_id7_1_1_ from orders orders0_ where orders0_.user_id=?
[DEBUG] 2020-03-14 15:22:47.419 [http-nio-8090-exec-10] SQL - select orders0_.id as id1_1_, orders0_.category_id as category6_1_, orders0_.created as created2_1_, orders0_.description as descript3_1_, orders0_.name as name4_1_, orders0_.updated as updated5_1_, orders0_.user_id as user_id7_1_ from orders orders0_ where orders0_.user_id=?
[DEBUG] 2020-03-14 15:22:47.425 [http-nio-8090-exec-10] SQL - select category0_.id as id1_0_0_, category0_.created as created2_0_0_, category0_.description as descript3_0_0_, category0_.name as name4_0_0_, category0_.updated as updated5_0_0_, orders1_.id as id1_1_1_, orders1_.category_id as category6_1_1_, orders1_.created as created2_1_1_, orders1_.description as descript3_1_1_, orders1_.name as name4_1_1_, orders1_.updated as updated5_1_1_, orders1_.user_id as user_id7_1_1_, user2_.id as id1_3_2_, user2_.active as active2_3_2_, user2_.created as created3_3_2_, user2_.password as password4_3_2_, user2_.updated as updated5_3_2_, user2_.username as username6_3_2_, roles3_.user_id as user_id1_2_3_, roles3_.role as role2_2_3_ from category category0_ left outer join orders orders1_ on category0_.id=orders1_.category_id left outer join usr user2_ on orders1_.user_id=user2_.id left outer join user_roles roles3_ on user2_.id=roles3_.user_id where category0_.id=?