пожалуйста, посмотрите здесь пример проекта, который я сделал для решения этой проблемы:
https://github.com/Fermi-4/StackOverflow---JPA-Relationships
После запуска на местном уровне, используйте Почтальон, чтобы настроить автомобиль на драйвер:
http://localhost: 9090 / api / assigncar? driverId = 1 & carId = 1
Driver Entity - с использованием Lombok
@Entity
@Table(name = "driver")
@Data
public class Driver {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long driverId;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Car car;
}
Car Entity - использование Lombok и @JsonIgnore для предотвращения бесконечной рекурсии
@Entity
@Table(name = "car")
@Data
public class Car {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long carId;
@JsonIgnore
@OneToMany
private List<Driver> drivers = new ArrayList<Driver>();
}
Хранилища
public interface CarRepository extends JpaRepository<Car, Long> { }
public interface DriverRepository extends JpaRepository<Driver, Long> { }
Класс контроллера
@RequestMapping("/api")
@RestController
public class DriverController {
@Autowired
CarRepository _carRepo;
@Autowired
DriverRepository _driverRepo;
@PostMapping("/assigncar")
public Driver assignCarToDriver(@RequestParam Long driverId,@RequestParam Long carId) {
Car car = _carRepo.findById(carId).get();
Driver driver = _driverRepo.findById(driverId).get();
driver.setCar(car);
return _driverRepo.save(driver);
}
}