Не удалять записи из таблицы - PullRequest
0 голосов
/ 14 марта 2020

Пружинная загрузка

модель:

@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=?

1 Ответ

0 голосов
/ 16 марта 2020

Удаляется, если id существует.

DEBUG 11348 --- [main] org.hibernate.SQL: delete from orders where id=?

Если id не существует EmptyResultDataAccessException выбрасывается:

org.springframework.dao.EmptyResultDataAccessException: No class com.package.Orders entity with id XX exists!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...