Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для eventdnb
1 / 1 / 0
Регистрация: 16.05.2015
Сообщений: 65

Не правильный запрос на добавление и изменение данных в связанных таблицах

31.03.2017, 21:33. Показов 1207. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет ребята. Делаю курсовую работу (Hibernate, Spring MVC, CRUD, MySQL). Возникла проблема в изменении и добавлении данных в связанных таблицах. Данные не могу добавить в базу данных. Подскажите что к чему, что исправить нужно. Спасибо.
Репозиторий с проектом: https://github.com/eventdnb/kursach
Так же прикрепил базу данных.
Вложения
Тип файла: zip autobazar.zip (1.2 Кб, 0 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2017, 21:33
Ответы с готовыми решениями:

Построить правильный запрос в связанных таблицах БД Firebird
вопрос задавался мной но так и не решил, может не так спросил. вопрос перестроил

Как реализовать запрос в связанных таблицах?
Есть 2 таблицы, в которых я перечислила только нужные поля. Документы (или накладные) Documents (название таблицы) DocId...

Sql запрос на поиск полей в связанных таблицах
Доброго времени суток имеется база данных со связанными столбцами таблица 1 main с колонками id_raz и raz, и вторая таблица ...

10
 Аватар для Borsche
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
01.04.2017, 09:55
Вы думаете кто то будет лезьть в гитхаб и просматривать кучу классов?? Выложите те классы где возникает ошибка и опишите ваши действия при её возникновении. Тут нету екстрасенсов.
0
 Аватар для eventdnb
1 / 1 / 0
Регистрация: 16.05.2015
Сообщений: 65
01.04.2017, 10:37  [ТС]
Окей, вот класс:
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
package cn.zhisheng.controller;
 
import cn.zhisheng.model.AutoEntity;
import cn.zhisheng.model.CityEntity;
import cn.zhisheng.model.OrderEntity;
import cn.zhisheng.model.UserEntity;
import cn.zhisheng.repository.AutoRepository;
import cn.zhisheng.repository.CityRepository;
import cn.zhisheng.repository.OrderRepository;
import cn.zhisheng.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
 
import java.util.List;
 
 
@Controller
public class IndexController
{
 
    @Autowired
    UserRepository userRepository;
 
    @Autowired
    AutoRepository autoRepository;
 
    @Autowired
    CityRepository cityRepository;
 
    @Autowired
    OrderRepository orderRepository;
 
 
    //User
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index()
    {
        return "index";
    }
 
    @RequestMapping(value = "/admin/users", method = RequestMethod.GET)
    public String getUser(ModelMap modelMap)
    {
 
        List<UserEntity> userList = userRepository.findAll();
 
        modelMap.addAttribute("userList", userList);
 
        return "admin/users";
    }
 
    @RequestMapping(value = "/admin/users/add", method = RequestMethod.GET)
    public String addUser()
    {
        return "admin/addUser";
    }
 
 
    @RequestMapping(value = "/admin/users/addP", method = RequestMethod.POST)
    public String addUserPost(@ModelAttribute("user") UserEntity userEntity)
    {
        userRepository.saveAndFlush(userEntity);
 
        return "redirect:/admin/users";
    }
 
    @RequestMapping(value = "/admin/users/show/{id}", method = RequestMethod.GET)
    public String showUser(@PathVariable("id") int Id, ModelMap modelMap)
    {
        UserEntity userEntity = userRepository.findOne(Id);
 
        modelMap.addAttribute("user", userEntity);
 
        return "admin/userDetail";
    }
 
    @RequestMapping(value = "/admin/users/update/{id}", method = RequestMethod.GET)
    public String updateUser(@PathVariable("id") int Id, ModelMap modelMap)
    {
        UserEntity userEntity = userRepository.findOne(Id);
 
        modelMap.addAttribute("user", userEntity);
 
        return "admin/updateUser";
    }
 
    @RequestMapping(value = "/admin/users/updateP", method = RequestMethod.POST)
    public String updateUserPost(@ModelAttribute("userP") UserEntity user)
    {
        userRepository.updateUser(user.getName(), user.getMobile_number(), user.getId());
        userRepository.flush();
        return "redirect:/admin/users";
    }
 
    @RequestMapping(value = "/admin/users/delete/{id}", method = RequestMethod.GET)
    public String deleteUser(@PathVariable("id") int Id)
    {
        userRepository.delete(Id);
        userRepository.flush();
        return "redirect:/admin/users";
    }
 
 
 
    //City
    @RequestMapping(value = "/admin/citys", method = RequestMethod.GET)
    public String getCity(ModelMap modelMap)
    {
        List<CityEntity> cityList = cityRepository.findAll();
        modelMap.addAttribute("cityList", cityList);
 
        return "admin/citys";
    }
 
    @RequestMapping(value = "/admin/citys/add", method = RequestMethod.GET)
    public String addCity()
    {
        return "admin/addCity";
    }
 
    @RequestMapping(value = "/admin/citys/addP", method = RequestMethod.POST)
    public String addCityPost(@ModelAttribute("city") CityEntity cityEntity)
    {
        cityRepository.saveAndFlush(cityEntity);
        return "redirect:/admin/citys";
    }
 
    @RequestMapping(value = "/admin/citys/show/{id}", method = RequestMethod.GET)
    public String showCity(@PathVariable("id") int Id, ModelMap modelMap)
    {
        CityEntity cityEntity = cityRepository.findOne(Id);
        modelMap.addAttribute("city", cityEntity);
 
        return "admin/cityDetail";
    }
 
    @RequestMapping(value = "/admin/citys/update/{id}", method = RequestMethod.GET)
    public String updateCity(@PathVariable("id") int Id, ModelMap modelMap)
    {
        CityEntity cityEntity = cityRepository.findOne(Id);
        modelMap.addAttribute("city", cityEntity);
        return "admin/updateCity";
    }
 
    @RequestMapping(value = "/admin/citys/updateP", method = RequestMethod.POST)
    public String updateCityPost(@ModelAttribute("cityP") CityEntity city)
    {
        cityRepository.updateCity(city.getCity_name(), city.getRegion(), city.getid());
        cityRepository.flush();
        return "redirect:/admin/citys";
    }
 
    @RequestMapping(value = "/admin/citys/delete/{id}", method = RequestMethod.GET)
    public String deleteCity(@PathVariable("id") int Id)
    {
        cityRepository.delete(Id);
        cityRepository.flush();
        return "redirect:/admin/citys";
    }
 
 
    //Auto
    @RequestMapping(value = "/admin/autos", method = RequestMethod.GET)
    public String getAuto(ModelMap modelMap)
    {
 
        List<AutoEntity> autoList = autoRepository.findAll();
        modelMap.addAttribute("autoList", autoList);
        return "admin/autos";
    }
//*******************************************************************************************
    @RequestMapping(value = "/admin/autos/add", method = RequestMethod.GET)
    public String addAuto(ModelMap modelMap)
    {
        List<UserEntity> userList = userRepository.findAll();
        List<CityEntity> cityList = cityRepository.findAll();
        modelMap.addAttribute("cityList", cityList);
        modelMap.addAttribute("userList", userList);
        return "admin/addAuto";
    }
 
    @RequestMapping(value = "/admin/autos/addP", method = RequestMethod.POST)
    public String addAutoPost(@ModelAttribute("auto") AutoEntity autoEntity)
    {
        System.out.println(autoEntity.getCityByid());
        System.out.println(autoEntity.getUserByid());
        autoRepository.saveAndFlush(autoEntity);
        return "redirect:/admin/autos";
    }
//************************************************************************************
    @RequestMapping(value = "/admin/autos/show/{id}")
    public String showAuto(@PathVariable("id") int id, ModelMap modelMap)
    {
        AutoEntity auto = autoRepository.findOne(id);
        modelMap.addAttribute("auto", auto);
        return "admin/autoDetail";
    }
 
    @RequestMapping(value = "/admin/autos/update/{id}")
    public String updateAuto(@PathVariable("id") int id, ModelMap modelMap)
    {
        AutoEntity auto = autoRepository.findOne(id);
        List<CityEntity> citylist = cityRepository.findAll();
        List<UserEntity> userList = userRepository.findAll();
        modelMap.addAttribute("auto", auto);
        modelMap.addAttribute("cityList", citylist);
        modelMap.addAttribute("userList", userList);
 
        return "admin/updateAuto";
    }
//*****************************************************************************************
    @RequestMapping(value = "/admin/autos/updateP", method = RequestMethod.POST)
    public String updateAutoP(@ModelAttribute("autoP") AutoEntity autoEntity)
    {
        autoRepository.updateAuto(autoEntity.getMarka(), autoEntity.getModel(),
                autoEntity.getColor(), autoEntity.getYear(), autoEntity.getPrice(),
                autoEntity.getName_type(), autoEntity.getCityByid().getid(),
                autoEntity.getUserByid().getId(), autoEntity.getId());
 
        autoRepository.flush();
        return "redirect:/admin/autos";
    }
//***************************************************************************************
    @RequestMapping("/admin/autos/delete/{id}")
    public String deleteAuto(@PathVariable("id") int id)
    {
        autoRepository.delete(id);
        autoRepository.flush();
        return "redirect:/admin/autos";
    }
 
    //------------------------------------------------------------------------------------------------------------------
    //Order
    @RequestMapping(value = "/admin/orders", method = RequestMethod.GET)
    public String getOrder(ModelMap modelMap)
    {
 
        List<OrderEntity> orderList = orderRepository.findAll();
        modelMap.addAttribute("orderList", orderList);
        return "admin/orders";
    }
//**********************************************************************************************
    @RequestMapping(value = "/admin/orders/add", method = RequestMethod.GET)
    public String addOrder(ModelMap modelMap)
    {
        List<UserEntity> userList = userRepository.findAll();
        List<CityEntity> cityList = cityRepository.findAll();
        List<AutoEntity> autoList = autoRepository.findAll();
        modelMap.addAttribute("autoList", autoList);
        modelMap.addAttribute("cityList", cityList);
        modelMap.addAttribute("userList", userList);
        return "admin/addOrder";
    }
 
 
    @RequestMapping(value = "/admin/orders/addP", method = RequestMethod.POST)
    public String addOrderPost(@ModelAttribute("order") OrderEntity orderEntity)
    {
        System.out.println(orderEntity.getCityByid());
        System.out.println(orderEntity.getUserByid());
        System.out.println(orderEntity.getAutoByid());
        orderRepository.saveAndFlush(orderEntity);
        return "redirect:/admin/orders";
    }
//*****************************************************************************************************
    @RequestMapping(value = "/admin/orders/show/{id}", method = RequestMethod.GET)
    public String showOrder(@PathVariable("id") int Id, ModelMap modelMap)
    {
        OrderEntity orderEntity = orderRepository.findOne(Id);
        modelMap.addAttribute("order", orderEntity);
 
        return "admin/orderDetail";
    }
 
    @RequestMapping(value = "/admin/orders/update/{id}", method = RequestMethod.GET)
    public String updateOrder(@PathVariable("id") int Id, ModelMap modelMap)
    {
        List<UserEntity> userList = userRepository.findAll();
        List<CityEntity> citylist = cityRepository.findAll();
        List<AutoEntity> autoList = autoRepository.findAll();
        modelMap.addAttribute("autoList", autoList);
        modelMap.addAttribute("cityList", citylist);
        modelMap.addAttribute("userList", userList);
        OrderEntity orderEntity = orderRepository.findOne(Id);
        modelMap.addAttribute("order", orderEntity);
        return "admin/updateOrder";
    }
//***********************************************************************************************
    @RequestMapping(value = "/admin/orders/updateP", method = RequestMethod.POST)
    public String updateOrderPost(@ModelAttribute("orderP") OrderEntity order)
    {
        orderRepository.updateOrder(order.getData(), order.getUserByid().getId(),
                order.getAutoByid().getId(), order.getCityByid().getid(),
                order.getId());
        autoRepository.flush();
        return "redirect:/admin/orders";
    }
//***********************************************************************************************
    @RequestMapping(value = "/admin/oreders/delete/{id}", method = RequestMethod.GET)
    public String deleteOrder(@PathVariable("id") int Id)
    {
        orderRepository.delete(Id);
        orderRepository.flush();
        return "redirect:/admin/orders";
    }
 
}
Ошибка возникает при добавлении и изменении данных (после ввода данных перенаправляет на ту страницу на которую надо, но выпадает ошибка 400 - то говорит о неправильном запросе, и так на все остальное, кроме тех таблиц, в которых нету связей). Вот все что меня беспокоит: updateOrderPost, addOrderPost, updateAutoP, addAutoPost.
0
 Аватар для Borsche
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
01.04.2017, 10:53
Хорошо что вы контроллеры скинули, но добавте теперь сервисы и DAO
0
 Аватар для eventdnb
1 / 1 / 0
Регистрация: 16.05.2015
Сообщений: 65
01.04.2017, 11:11  [ТС]
Я делал не много по другому, более сокращенно, вот так:
Авто
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package cn.zhisheng.model;
 
import javax.persistence.*;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
 
@Entity
@Table(name = "autos", schema = "autobazar", catalog = "")
public class AutoEntity
{
    private int id;
    private String marka;
    private String model;
    private String color;
    private Date year;
    private Double price;
    private String name_type;
 
    private CityEntity cityByid;
    private UserEntity userByid;
    private Set<OrderEntity> orderEntity = new HashSet<OrderEntity>(
            0);
 
 
    @Id
    @Column(name = "id", nullable = false)
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    @Basic
    @Column(name = "marka", nullable = false, length = 45)
    public String getMarka() {
        return marka;
    }
 
    public void setMarka(String marka) {
        this.marka = marka;
    }
 
    @Basic
    @Column(name = "model", nullable = false, length = 45)
    public String getModel() {
        return model;
    }
 
    public void setModel(String model) {
        this.model = model;
    }
 
    @Basic
    @Column(name = "color", nullable = false, length = 45)
    public String getColor() {
        return color;
    }
 
    public void setColor(String color) {
        this.color = color;
    }
 
    @Basic
    @Column(name = "year", nullable = false)
    public Date getYear() {return year;}
 
    public void setYear(Date year) {this.year = year;}
 
    @Basic
    @Column(name = "price", nullable = false)
    public Double getPrice() {
        return price;
    }
 
    public void setPrice(Double price) {
        this.price = price;
    }
 
    @Basic
    @Column(name = "name_type", nullable = false, length = 45)
    public String getName_type() {
        return name_type;
    }
 
    public void setName_type(String name_type) {
        this.name_type = name_type;
    }
 
 
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
 
        AutoEntity that = (AutoEntity) o;
 
        if (id != that.id) return false;
        if (marka != null ? !marka.equals(that.marka) : that.marka != null) return false;
        if (model != null ? !model.equals(that.model) : that.model != null) return false;
        if (color != null ? !color.equals(that.color) : that.color != null) return false;
        if (year != null ? !year.equals(that.year) : that.year != null) return false;
        if (price != null ? !price.equals(that.price) : that.price != null) return false;
        if (name_type != null ? !name_type.equals(that.name_type) : that.name_type != null) return false;
 
        return true;
    }
 
    @Override
    public int hashCode() {
        int result = id;
        result = 31 * result + (marka != null ? marka.hashCode() : 0);
        result = 31 * result + (model != null ? model.hashCode() : 0);
        result = 31 * result + (color != null ? color.hashCode() : 0);
        result = 31 * result + (year != null ? year.hashCode() : 0);
        result = 31 * result + (price != null ? price.hashCode() : 0);
        result = 31 * result + (name_type != null ? name_type.hashCode() : 0);
        return result;
    }
 
 
 
 
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id", nullable = false)
    public UserEntity getUserByid() {
        return userByid;
    }
    public void setUserByid(UserEntity userByid) {this.userByid = userByid;}
 
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "city_id", nullable = false)
    public CityEntity getCityByid() {return cityByid;}
    public void setCityByid(CityEntity cityByid) {
        this.cityByid = cityByid;
    }
 
 
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "autoByid")
    public Set<OrderEntity> getOrderEntity() {
        return orderEntity;
    }
 
    public void setOrderEntity(Set<OrderEntity> orderEntity) {
        this.orderEntity = orderEntity;
    }
 
}
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
package cn.zhisheng.repository;
 
import cn.zhisheng.model.AutoEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.Date;
@Repository
public interface AutoRepository extends JpaRepository<AutoEntity, Integer>{
 
    @Modifying
    @Transactional
 
    @Query("update AutoEntity  auto set auto.marka=:qMarka, auto.model=:qModel, auto.color=:qColor, " +
            "auto.year=:qYear, auto.price=:qPrice, auto.name_type=:qName_type, " +
            " auto.cityByid.id=:qCity_id, auto.userByid.id=:qUser_id  where auto.id=:qId")
    public void updateAuto(@Param("qMarka") String marka,
                           @Param("qModel") String model,
                           @Param("qColor") String color,
                           @Param("qYear") Date year,
                           @Param("qPrice") Double price,
                           @Param("qName_type") String name_type,
                           @Param("qCity_id") int city_id,
                           @Param("qUser_id") int user_id,
                           @Param("qId") int id);
 
}
Ордер
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
82
83
84
85
86
package cn.zhisheng.model;
 
import javax.persistence.*;
import java.util.Date;
 
@Entity
@Table(name = "orders", schema = "autobazar", catalog = "")
public class OrderEntity {
    private int id;
    private Date data;
    private UserEntity userByid;
    private AutoEntity autoByid;
    private CityEntity cityByid;
 
    @Id
    @Column(name = "id", nullable = false)
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    @Basic
    @Column(name = "data", nullable = false)
    public Date getData() {
        return data;
    }
 
    public void setData(Date data) {
        this.data = data;
    }
 
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
 
        OrderEntity that = (OrderEntity) o;
 
        if (id!= that.id) return false;
        if (data != null ? !data.equals(that.data) : that.data != null) return false;
 
        return true;
    }
 
    @Override
    public int hashCode() {
        int result = id;
        result = 31 * result + (data != null ? data.hashCode() : 0);
        return result;
    }
 
 
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    public UserEntity getUserByid() {
        return userByid;
    }
 
    public void setUserByid(UserEntity userByid) {
        this.userByid = userByid;
    }
 
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "city_id")
    public CityEntity getCityByid() {
        return cityByid;
    }
 
    public void setCityByid(CityEntity cityByid) {
        this.cityByid = cityByid;
    }
 
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "auto_id")
    public AutoEntity getAutoByid() {
        return autoByid;
    }
 
    public void setAutoByid(AutoEntity autoByid) {
        this.autoByid = autoByid;
    }
 
}
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
package cn.zhisheng.repository;
 
import cn.zhisheng.model.AutoEntity;
import cn.zhisheng.model.CityEntity;
import cn.zhisheng.model.OrderEntity;
import cn.zhisheng.model.UserEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.Date;
 
@Repository
public interface OrderRepository extends JpaRepository<OrderEntity, Integer>
{
    @Modifying
    @Transactional
 
  @Query("update OrderEntity us set us.data=:qData," +
          " us.userByid.id=:qUser_id, us.autoByid.id=:qAuto_id," +
          " us.cityByid.id=:qCity_id where us.id=:qId")
    public void updateOrder(@Param("qData") Date data,
                            @Param("qUser_id") int user_id,
                            @Param("qAuto_id") int auto_id,
                            @Param("qCity_id") int city_id,
                            @Param("qId") int id);
 
}
0
 Аватар для Borsche
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
01.04.2017, 11:27
Что это вообще за запрос такой???
Java
1
2
3
@Query("update AutoEntity  auto set auto.marka=:qMarka, auto.model=:qModel, auto.color=:qColor, " +
            "auto.year=:qYear, auto.price=:qPrice, auto.name_type=:qName_type, " +
            " auto.cityByid.id=:qCity_id, auto.userByid.id=:qUser_id  where auto.id=:qId")
Я конечно может не в курсе каких то модных супер запросов такого типа. Но как по мне это не проще это каша.
Зачем вы пишите такой длинный update. Вот это это auto.userByid.id=:qUser_id вообще что-то из разряда фантастики . Нельзя id новый ставить.
JPA было придуманно чтобы упростить работу програмиста, а вы её усложнить пытаетесь.
Вам нужно просто найти обьект в таблице по id. Я со spring data не работал но там должен быть метод по умолчанию что то типа getById(id) или findById(id). А далее вы к примеру достали AutoEntity auto = autoRepository.findById(id);
И дальше просто устанавливаете сеттерами новые значение полей. Конечно же это всё должно быть в рамках транзаакции.
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
02.04.2017, 21:51
это удаляешь
Цитата Сообщение от eventdnb Посмотреть сообщение
@Query("update AutoEntity *auto set auto.marka=:qMarka, auto.model=:qModel, auto.color=:qColor, " +
* * * * * * "auto.year=:qYear, auto.price=:qPrice, auto.name_type=:qName_type, " +
* * * * * * " auto.cityByid.id=:qCity_id, auto.userByid.id=:qUser_id *where auto.id=:qId")
* * public void updateAuto(@Param("qMarka") String marka,
* * * * * * * * * * * * * *@Param("qModel") String model,
* * * * * * * * * * * * * *@Param("qColor") String color,
* * * * * * * * * * * * * *@Param("qYear") Date year,
* * * * * * * * * * * * * *@Param("qPrice") Double price,
* * * * * * * * * * * * * *@Param("qName_type") String name_type,
* * * * * * * * * * * * * *@Param("qCity_id") int city_id,
* * * * * * * * * * * * * *@Param("qUser_id") int user_id,
* * * * * * * * * * * * * *@Param("qId") int id);
это заменяешь:
Цитата Сообщение от eventdnb Посмотреть сообщение
autoRepository.updateAuto(autoEntity.get Marka(), autoEntity.getModel(),
* * * * * * * * autoEntity.getColor(), autoEntity.getYear(), autoEntity.getPrice(),
* * * * * * * * autoEntity.getName_type(), autoEntity.getCityByid().getid(),
* * * * * * * * autoEntity.getUserByid().getId(), autoEntity.getId());
autoRepository.flush();
на
Цитата Сообщение от eventdnb Посмотреть сообщение
autoRepository.saveAndFlush(autoEntity);
0
 Аватар для eventdnb
1 / 1 / 0
Регистрация: 16.05.2015
Сообщений: 65
03.04.2017, 17:23  [ТС]
спасибо, но ничего не изменилось, ошибка 400 как была так и осталась(
0
 Аватар для Borsche
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
03.04.2017, 18:19
Да во имя всех преподобных вы бы и сказали что ошибка 400. Продемонстрируйте страничку с которой ошибка вылетает.

Добавлено через 32 минуты
Так как делать нечего) я залез посмотрел. Может я что то пропустил но вот тут ты ложишь в страничку уйму, мать их, данных. Три преподобных листа это ж может быть мегабайты данных. Да любой сервер загнётся) Но это не мое дело) Не в том соль.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
@RequestMapping(value = "/admin/orders/update/{id}", method = RequestMethod.GET)
    public String updateOrder(@PathVariable("id") int Id, ModelMap modelMap)
    {
        List<UserEntity> userList = userRepository.findAll();
        List<CityEntity> citylist = cityRepository.findAll();
        List<AutoEntity> autoList = autoRepository.findAll();
        modelMap.addAttribute("autoList", autoList);
        modelMap.addAttribute("cityList", citylist);
        modelMap.addAttribute("userList", userList);
        OrderEntity orderEntity = orderRepository.findOne(Id);
        modelMap.addAttribute("order", orderEntity);
        return "admin/updateOrder";
    }
Таки вот на сраничке твоя супер форма, тоесть кусочки:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 <div class="form-group">
                        <tr>
                            <th><label for="autoById.id">ID авто:</label></th>
                            <th><select class="form-control" id="autoById.id" name="autoById.id">
                                <c:forEach items="${autoList}" var="auto">
                                    <c:if test="${auto.id==order.autoByid.id}">
                                        <option value="${auto.id}" selected="selected">${auto.marka}</option>
                                    </c:if>
                                    <c:if test="${auto.id!=order.autoByid.id}">
                                        <option value="${auto.id}">${auto.marka}</option>
                                    </c:if>
                                </c:forEach>
                            </select></th>
                        </tr>
                    </div>
Так вот если я не ошибаюсь то ошибка может быть вот в чём. <c:forEach items="${autoList}" var="auto"> вы именуете обьект auto. Ну может это и канает я прост не пользовался JSTL. И мне кажется что в контроллер приходит id-шники. Воот а пост контроллере вы принимаете @ModelAttribute("orderP") OrderEntity order но в классу ордер нужен не id а вся сущность ну или её прокси.. Улавливаете суть? Sping пытаеться сложить из имеющихся данных новый обьет, но не магёт.
Попробуйте переделать пост контроллер, не принимать ордер, а только нужные данные такие как autoid и тд. И поним уже достать с БД нужные сущности и обновить ордер.
0
 Аватар для eventdnb
1 / 1 / 0
Регистрация: 16.05.2015
Сообщений: 65
03.04.2017, 20:07  [ТС]
ну смотри, выше в коде, я выбираю те данные которые есть в других таблицах, не только id, а все содержимое, а ниже в коде, я беру лист каждой с таблицы и выбираю только id, возможно конечно надо брать только id, не пробовал, надо будет, я к чему это просто что бы объяснить что я делаю)
вот страница с ошибкой:
Миниатюры
Не правильный запрос на добавление и изменение данных в связанных таблицах  
0
 Аватар для Borsche
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
03.04.2017, 20:42
Эта ошибка означает мол спринг неможет преобразовать данные на странице и отправить. У тебя там получаеться 3 вида обьектов, он непонимает просто что происходит).
Смотри как по мне это неправильно что ты передаёшь столько обьектов. Почитай про DTO - это раз. Старайся придумывать всегда чтобы передать как можно меньше данных на страницу.
Я б как сделал, я канешно не видел страницу редактирования заказов ну всё, я бы передал на страницу id авто, города и заказа, поменял бы то что нужно, отправил назад на контроллер и просто принял бы как @RequestParam тупо три числа, вытащил бы с базы заказ по id и прокси авто и города, и установил в заказ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.04.2017, 20:42
Помогаю со студенческими работами здесь

Отбор данных в связанных таблицах
Доброго времени суток форумчане. Имеется база данных с информацией о сотрудниках. В базе 4 таблицы: Сотрудники, Приказы, Подразделение,...

Редактирование данных в связанных таблицах
Подскажите, пожалуйста, как правильно выполнять редактирование данных в связанных таблицах? Есть таблицы tbl1(tbl1ID, Name, Description,...

Отображение данных в связанных таблицах
Всем привет! Имеются две таблицы: tovar (id, naimenovanie, proizvoditel) и proizvoditel (id, organizazia, adres) . Связь осуществляется по...

Сохранение данных в БД в связанных таблицах
Всем привет! У меня есть 4 таблицы, из которых 3 завязаны на одну многие ко многим (группа, предмет, курс на специальность). В программе я...

Удаление обновления данных в связанных таблицах
Всем доброго дня. Помогите пожалуйста от безысходности не знаю что делать. Перелапатил кучу инфы, но так и не нашёл нужно. Проблема...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru