Выборка данных многие ко многим
Имеется две сущности:
Cargo:
@Entity
public class Cargo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "activity")
private String activity;
@Column(name = "status")
private String status;
@Column(name = "cargo_number")
private String cargoNumber;
@Column(name = "cargo_type")
private String cargoType;
@Column(name = "out_bound_truck")
private String outBoundTruck;
@Column(name = "in_bound_truck")
private String inBoundTruck;
@Column(name = "master_cargo")
private String masterCargo;
@Column(name = "content_type")
private String contentType;
@Column(name = "supplier")
private String supplier;
@Column(name = "consignee")
private String consignee;
@Column(name = "address")
private String address;
@ManyToOne(fetch = FetchType.EAGER,cascade = {CascadeType.MERGE, CascadeType.PERSIST})
@JoinColumn(name = "master_cargo_fk", nullable = false)
private MasterCargo masterCargos;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "cargo_inbound_trucks",
joinColumns = @JoinColumn(name = "cargos_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "inbound_trucks_id", referencedColumnName = "id"))
private Set<InboundTruck> inboundTrucks;
}
InbooundTruck:
@Entity
public class InboundTruck {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "activity")
private String activity;
@Column(name = "status")
private String status;
@Column(name = "truckNumber")
private String truckNumber;
@Column(name = "trailerNumber")
private String trailerNumber;
@Column(name = "driverName")
private String driverName;
@Column(name = "carrier")
private String carrier;
@Column(name = "supplier")
private String supplier;
@Column(name = "comments")
private String comments;
@Column(name = "arrivalTimePlan")
private Date arrivalTimePlan;
@Column(name = "arrivalTimeFact")
private Date arrivalTimeFact;
@ManyToMany(fetch = FetchType.EAGER, mappedBy = "inboundTrucks")
private Set<Cargo> cargos;
}
Они связаны в БД таблицей CargoInboundTruck по Cargo_Id и InboundTruckId соответственно
так же есть контроллер для показа информации о машинах через ID
@GetMapping("/load/{id}")
public String loadEdit(@PathVariable(value = "id") Long id, Model model){
if(!inboundTruckRepository.existsById(id)){
return "load";
}
Optional<InboundTruck> inboundTruck = inboundTruckRepository.findById(id);
InboundTruck inboundTruck1 = inboundtruckService.findByCargo(id);
ArrayList<InboundTruck> res = new ArrayList<>();
inboundTruck.ifPresent(res :: add);
model.addAttribute("inboundTruck1", inboundTruck1);
model.addAttribute("inboundTruck", res);
return "loadtrucks";
}
и сервис :
InboundTruck addInboundTruck(InboundTruck inboundTruck);
void delete(Long id);
InboundTruck getByNumber(String number);
InboundTruck editInboundTruck(InboundTruck inboundTruck);
InboundTruck findByCargo(Long id);
List<InboundTruck> getAll();
Optional<InboundTruck> getById(Long id);
Подскажите, как осуществить метод findByCargo() что бы данные о cargo подтягивались из таблицы CargoInboundTruck по ID
Ответы (1 шт):
Автор решения: NullPointerException
→ Ссылка
данные о cargo подтягивались из таблицы CargoInboundTruck по ID
Замените в сервисе метод findByCargo() на findCargoById(Long id)