Я пытаюсь написать Веб приложение для работы с Базой данных.
Три таблицы: Груз, Груз в перевозке и сама перевозка
Я разобралась как читать из БД и выводить на экран. Начала делать заполнение и не могу никак разобраться с добавлением в таблицу Груз в перевозке, я создала выпадающий список (данные из табл Груз) и пытаюсь выбранное значение сохранить в таблице.
Помогите, пожалуйста, разобраться, как мне преобразовать полученное значение String для того чтобы удачно сохранять его в поле таблицы. Надеюсь, что это реально сделать в моей программе(
Таблица Груз в перевозке
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
| package com.example.RivPort.domain;
import javax.persistence.*;
@Entity
public class CargoInTraffic {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private int quantity;
private int weight;
private int price;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="cargo_id")
private Cargo cargo;//
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="traffic_id")
private Transfer transfer;
public CargoInTraffic() {
}
public CargoInTraffic(Cargo cargo, int quantity, int weight, int price) {
this.quantity = quantity;
this.weight = weight;
this.price = price;
this.cargo = cargo;
}
public String getCargoDescr(){
return cargo != null ? cargo.getDescr() : "<none>";
}
public long getTransferId(){
return transfer != null ? transfer.getId() : 0;
}
//getter and setter
} |
|
Таблица Груз
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
| package com.example.RivPort.domain;
import javax.persistence.*;
import java.util.List;
@Entity
public class Cargo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String view;
private String descr;
public Cargo() {
}
public Cargo(String view, String descr) {
this.view = view;
this.descr = descr;
}
@OneToMany(mappedBy = "cargo", cascade = CascadeType.ALL, orphanRemoval = true)
private List<CargoInTraffic> cargoInTraffics;
//getter and setter
} |
|
В моем Контроллере
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
| @Autowired
private CargoInTrafficRepo cargoInTrafficRepo;
@GetMapping("/cargoInTraffic")
public String cargoInTraffic(Model model){
Iterable<CargoInTraffic> cargoInTraffics = cargoInTrafficRepo.findAll();
Iterable<Cargo> cargos = cargoRepo.findAll();
model.addAttribute("cargoInTraffics",cargoInTraffics);
model.addAttribute("cargos",cargos);
return "cargoInTraffic";
}
@PostMapping("/cargoInTraffic")
public String add(
@ModelAttribute("cargoId") Cargo cargo,
@RequestParam int quantity,
@RequestParam int weight,
@RequestParam int price,
Map<String, Object> model){
CargoInTraffic cargoInTraffic = new CargoInTraffic(cargo, quantity, weight, price);
cargoInTrafficRepo.save(cargoInTraffic);
Iterable<CargoInTraffic> cargoInTraffics = cargoInTrafficRepo.findAll();
model.put("cargoInTraffics",cargoInTraffics);
return "cargoInTraffic";
} |
|
мой выпадающий список
HTML5 |
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
| <a class="btn btn-primary" data-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">
Add new cargoInTraffic
</a>
<div class="collapse" id="collapseExample">
<div class="form-group mt-3">
<form method="post">
<div class="input-group mb-3">
<div class="input-group-prepend">
<label class="input-group-text" for="inputGroupSelect01">Список грузов</label>
</div>
<select class="custom-select" id="inputGroupSelect01" name="cargoId">
<option selected>Choose...</option>
<#list cargos as cargo>
<option value="${cargo.id}">${cargo.descr}</option>
</#list>
</select>
</div>
<div class="form-group">
<input type="text" class="form-control" name="quantity" placeholder="Количество" />
</div>
<div class="form-group">
<input type="text" class="form-control" name="weight" placeholder="Вес" />
</div>
<div class="form-group">
<input type="text" class="form-control" name="price" placeholder="Цена " />
</div>
<input type="hidden" name="_csrf" value="${_csrf.token}" />
<div class="form-group">
<button type="submit" class="btn btn-primary">Добавить</button>
</div>
</form>
</div>
</div> |
|
Ошибка, при попытке сохранения (12 - это тот id, который я выбрала по наименованию из списка, все правильно)