У меня есть две сущности: Самолет
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.jpa.domain.AbstractPersistable;
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
//@ToString
public class Aircraft extends AbstractPersistable<Long> {
private String name;
@ManyToOne
private Airport airport;
@Override
public String toString(){
return name;
}
}
И Аэропорт:
public class Airport extends AbstractPersistable<Long> {
private String identifier;
private String name;
@OneToMany(mappedBy = "airport")
private List<Aircraft> aircrafts = new ArrayList<>();
@Override
public String toString(){
String aircraftString = aircrafts.stream().map(r -> r.toString()).collect(Collectors.joining(", "));
return "airport " + name + " " + "[" + aircraftString + "]";
}
}
И @PostMapping в @Controller вот так:
@PostMapping("/aircrafts/{aircraftId}/airports")
public String assignAirport(@RequestParam Long airportId,@PathVariable Long aircraftId){
Aircraft aircraft = aircraftRepository.getOne(aircraftId);
Airport airport = airportRepository.getOne(airportId);
aircraft.setAirport(airport);
aircraftRepository.save(aircraft)
System.out.println(airport.toString());
System.out.println(aircraft.toString());
return "redirect:/aircrafts";
}
Это работает. Но не могу понять, как этот
private List<Aircraft> aircrafts = new ArrayList<>();
List обновляется? Сначала я подумал, что это должно работать так в @ Controller
airport.getAircrafts().add(aircraft);
Но это ничего не делает.