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

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

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

Студворк — интернет-сервис помощи студентам
У меня уже есть 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.03.2020, 02:17
Ответы с готовыми решениями:

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

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

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

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

Решение

POST user/{id}/order например
Читай что такое rest
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2020, 09:48
Помогаю со студенческими работами здесь

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru