Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
-4 / 24 / 7
Регистрация: 16.12.2016
Сообщений: 716
1

[hibernate] формирование запроса на сервер для добавления сущности по схеме many-to-one?

04.03.2020, 02:17. Показов 1485. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня уже есть CRUD приложение (без view)
я протестировал каждую операцию все работает в базе изменения отображаются. Тестил с помощью POSTMAN.
хочу понять как бы мне без view протестировать связи?

у меня есть user, у user есть order.
хочу чтобы я мог добавлять и удалять order у user, и если удаляю user, то все его orders тоже бы удалялись из таблицы.
как послать запрос на сервер для добавления юзеру нового ордера? можно без кода только суть или ссылку на статью... но лучше псевдокодом хотябы.

пока что связал сущности:

USER
Кликните здесь для просмотра всего текста
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package com.kostapo.spring.model;
 
import java.util.ArrayList;
import java.util.List;
 
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
 
@Entity
@Table(name="users")
public class User {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private int id;
    
    @Column(name="firstname",nullable = false)
    private String firstname;
    
    @Column(name="lastname",nullable = false)
    private String lastname;
    
    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
    private List<Order> orders;
    
    public User() {
        
    }
    
    public User(String firstname, String lastname) {
        this.firstname = firstname;
        this.lastname = lastname;
        orders = new ArrayList<>();
    }
    
    public void addOrder(Order order) {
        order.setUser(this);
        orders.add(order);
    }
 
    public void removeOrder(Order order) {
        orders.remove(order);
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getFirstname() {
        return firstname;
    }
 
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }
 
    public String getLastname() {
        return lastname;
    }
 
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
 
    @Override
    public String toString() {
        return "User [id=" + id + ", firstname=" + firstname + ", lastname=" + lastname + "]";
    }
    
}



ORDER
Кликните здесь для просмотра всего текста
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
55
56
57
58
59
60
61
62
package com.kostapo.spring.model;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
 
@Entity
@Table(name="orders")
public class Order {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private int id;
    
    @Column(name="product",nullable = false)
    private String product;
    
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    private User user;
    
    public Order() {
        
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getProduct() {
        return product;
    }
 
    public void setProduct(String product) {
        this.product = product;
    }
 
    public User getUser() {
        return user;
    }
 
    public void setUser(User user) {
        this.user = user;
    }
 
    @Override
    public String toString() {
        return "Order [id=" + id + ", product=" + product + ", user=" + user + "]";
    }
    
}


вот контроллер, который пока что работает только с юзером:
Кликните здесь для просмотра всего текста
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
55
56
57
58
59
60
61
package com.kostapo.spring.controller;
 
import java.util.List;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.kostapo.spring.model.User;
import com.kostapo.spring.service.UserService;
 
@CrossOrigin(origins = "*")
@RestController
public class UserController {
 
   @Autowired
   private UserService userService;
 
   /*---Add new user---*/
   @PostMapping("/user")
   public ResponseEntity<?> save(@RequestBody User user) {
      System.out.println("the json value of user is :::::: "+user);
      int id = userService.add(user);
      return ResponseEntity.ok().body("New User has been saved with ID:" + id);
   }
   
   /*---Get user by id---*/
   @GetMapping("/user/{id}")
   public ResponseEntity<User> get(@PathVariable("id") int id) {
      User user = userService.get(id);
      return ResponseEntity.ok().body(user);
   }
 
   /*---get all users---*/
   @GetMapping("/user")
   public ResponseEntity<List<User>> list() {
      List<User> users = userService.list();
      return ResponseEntity.ok().body(users);
   }
 
   /*---Update user by id---*/
   @PutMapping("/user/{id}")
   public ResponseEntity<?> update(@PathVariable("id") int id, @RequestBody User user) {
      userService.update(id, user);
      return ResponseEntity.ok().body("User has been updated successfully.");
   }
 
   /*---Delete user by id---*/
   @DeleteMapping("/user/{id}")
   public ResponseEntity<?> delete(@PathVariable("id") int id) {
      userService.delete(id);
      return ResponseEntity.ok().body("User has been deleted successfully.");
   }
}



вот DAO слой
Кликните здесь для просмотра всего текста
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
55
56
57
58
59
60
61
62
package com.kostapo.spring.dao;
 
import java.util.List;
 
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
 
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
 
import com.kostapo.spring.model.User;
 
 
@Repository
public class UserDaoImpl implements UserDao{
    
    @Autowired
    private SessionFactory sessionFactory;
 
    @Override
    public int add(User user) {
        sessionFactory.getCurrentSession().save(user);
        return user.getId();
    }
 
    @Override
    public User get(int id) {
        return sessionFactory.getCurrentSession().get(User.class, id);
    }
 
    @Override
    public List<User> list() {
        Session session = sessionFactory.getCurrentSession();
        CriteriaBuilder cb = session.getCriteriaBuilder();
        CriteriaQuery<User> cq = cb.createQuery(User.class);
        Root<User> root = cq.from(User.class);
        cq.select(root);
        Query<User> query = session.createQuery(cq);
        return query.getResultList();
    }
 
    @Override
    public void update(int id, User user) {
        Session session = sessionFactory.getCurrentSession();
        User tmpuser = session.byId(User.class).load(id);
        tmpuser.setFirstname(user.getFirstname());
        tmpuser.setLastname(user.getLastname());
        session.flush();
    }
 
    @Override
    public void delete(int id) {
        Session session = sessionFactory.getCurrentSession();
        User user = session.byId(User.class).load(id);
        session.delete(user);
    }
    
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2020, 02:17
Ответы с готовыми решениями:

Сохранение сущности Hibernate
Всем привет! Возникла интересная ситуация. Я создаю сущность и сохраняю в бд. Затем сразу кое что...

Создание копии сущности в Hibernate
Добрый день. Есть сущность Юзер(User.class), которая имеет список сущностей Lesson(...

Ошибка при запросе коллекции из объекта сущности Hibernate
Здравствуйте! Есть сущность сформированная Hibernate, в которой есть поле хранящие коллекцию...

Лишние сущности в схеме данных
Как избавиться от сущностей вида Сущность_1 и почему они появляются??

1
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
04.03.2020, 09:48 2
Лучший ответ Сообщение было отмечено SadiQ228 как решение

Решение

POST user/{id}/order например
Читай что такое rest
1
04.03.2020, 09:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2020, 09:48
Помогаю со студенческими работами здесь

[Hibernate & Spring Data] Получить список объектов сущности из ManyToMany
Сущность User @Entity @Table(name = &quot;users&quot;) public class User { @Id ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru