com.sun.jdi.InvocationException: в целевой виртуальной машине произошло исключение, вызвавшее метод

#java #mysql #spring-boot #transactions #relationship

#Ява #mysql #пружинный ботинок #операции #отношения

Вопрос:

поэтому я пытаюсь установить два связанных объекта в полях друг друга. Но когда я отлаживаю код, я получаю это после того, как я установил первый объект в качестве поля в другом, я получаю следующую ошибку: com.sun.jdi.InvocationException: в целевой виртуальной машине произошло исключение, вызвавшее метод.

Вот исходный код, я надеюсь, что кто-нибудь сможет помочь. Спасибо 😀

 @Service @Transactional public class MainService {   @Autowired CustomTableRepository tRepo;  @Autowired UserRepository uRepo;  @Autowired ReservationRepository rRepo;   @SneakyThrows  public void reserveTable(Reservation reservation) {  CustomTable table = tRepo.findById(reservation.getTable().getId()).get();  User user = uRepo.findByUsername(reservation.getUser().getUsername());  Reservation myReservation = new Reservation(null, reservation.getAccepted(), user, table, reservation.getTime());  rRepo.saveAndFlush(myReservation);  if(!(reservationRequirements(rRepo.findByUser(user))))  throw new Exception("something went wrong with the reservation, regarding the requierements");  else {  user.setBalance(user.getBalance() - CONSTANTS.fee );  user.setReservation(myReservation);  myReservation.setAccepted(true);  myReservation.setTable(table);  myReservation.setUser(user);  table.setReservation(myReservation);  table.setAvailable(false);  uRepo.saveAndFlush(user);  tRepo.saveAndFlush(table);  rRepo.save(myReservation);  }  }      /*  * PRIVATE HELPING METHODS  */    private Boolean reservationRequirements(Reservation reservation) {  User user = uRepo.findByUsername(reservation.getUser().getUsername());  //check if the user has enough money  if(user.getBalance() lt; CONSTANTS.fee)  return false;  //check if they accepted the money fee.  if(reservation.getAccepted() == false)  return false;  //if the table is occupied  if(reservation.getTable().getAvailable() == null) {    }else {  if(reservation.getTable().getAvailable() == false)  return false;  }  LocalTime time = CONSTANTS.parseLocalTime(reservation.getTime());  if(!(time.isAfter(LocalTime.parse("07:30")) amp;amp; time.isBefore(LocalTime.parse("22:00"))))  return false;  return true;  }  }  

Вот как все они связаны друг с другом:

Классы сущностей:

 @Entity @Data @NoArgsConstructor @AllArgsConstructor public class CustomTable {   @Id  @GeneratedValue(strategy = GenerationType.AUTO)  private Long id;  private Boolean available;  private Boolean busy;  private Boolean arrived;  @OneToOne(mappedBy = "table", cascade = CascadeType.ALL, orphanRemoval = true)  private Reservation reservation;   }  @Entity @Data @NoArgsConstructor @AllArgsConstructor public class Reservation {    @Id  @GeneratedValue(strategy = GenerationType.SEQUENCE)  private Long id;  private Boolean accepted;  @OneToOne  @JoinColumn(name = "user_id")  private User user;  @OneToOne  @JoinColumn(name = "table_id")  private CustomTable table;  private String time;   }  @Entity @Data @NoArgsConstructor @AllArgsConstructor public class Role {  @Id  @GeneratedValue(strategy = GenerationType.SEQUENCE)  private Long id;  private String type; }  @Entity @Data @NoArgsConstructor @AllArgsConstructor public class User {  @Id  @GeneratedValue(strategy = GenerationType.SEQUENCE)  private Long id;  private String username;  private String password;  private Long number;  private Long balance;  @OneToOne(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)  private Reservation reservation;  @ManyToMany(fetch = FetchType.EAGER)  private Collectionlt;Rolegt; roles; }  

Большое вам спасибо за чтение.

Комментарии:

1. Кстати, я также нахожусь в бесконечном цикле из-за отношений таблицы бронирования пользователей

2. Для вашего исключения: я мог бы указать только на 1 вещь. получаете ли вы исключение после этого : rRepo.saveAndFlush(myReservation); если да, то вам не следует очищать данные. попробуйте сохранить данные без промывки.