Используя весеннюю загрузку и спящие аннотации, я хочу, чтобы Depot содержал несколько BusVehicle в отношениях «многие к одному». BusVehicules также нельзя назначить для депо, помечая их внешний ключ как ноль. Из того, что я прочитал, по умолчанию это должно быть nullable, но я получаю следующую ошибку при попытке вставить мой элемент:
There was an unexpected error (type=Internal Server Error, status=500).
could not execute statement; SQL [n/a]; constraint ["FK9ORG94PEJ62WYIS4QS1F2WCP7: PUBLIC.BUSVEHICULE FOREIGN KEY(ID) REFERENCES PUBLIC.DEPOT(ID) (1)"; SQL statement: insert into busvehicule (id, busvehicule_color, fk_depot_id, busvehicule_passengercapacity, busvehicule_platenumber, busvehicule_type) values (null, ?, ?, ?, ?, ?) [23506-199]]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
Я попытался добавить аннотации, такие как nullable = true или необязательный = true, но ничего не изменилось. Я использую базу данных H2.
BusVehicle:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(optional=true)
@JoinColumn(name ="FK_depotId", nullable = true)
private Depot depotParkedIn;
Склад:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "DEPOT_BUSVEHICULESPARKED")
@OneToMany(mappedBy="id", cascade = CascadeType.DETACH, fetch=FetchType.EAGER)
private Set<BusVehicle> busVehiclesParked = new HashSet<BusVehicle>();
h2 управление:
spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:test
Код, сохраняющийобъект:
@Autowired
BusVehicleRepository busVehiculeRepository;
@PostMapping("/createbusvehicle")
public String checkAndCreateBusVehicle (BusVehicle newBusVehicle, Model model) {
if (!BusVehiculeWrapper.ValidateBusVehicle(newBusVehicle)) {
return "createBusVehicle";
}
busVehiculeRepository.save(newBusVehicle);
return "mainpage";
}
busVehiculeRepository:
@Repository
public interface BusVehicleRepository extends JpaRepository<BusVehicle, Long> {
public List<BusVehicle> findByDepotParkedInNull();
}
Сбой при сохранении метода из хранилища после прохождения моей пользовательской проверки (которая не проверяет, что хранилище не является нулевым, так как этоожидается.)