У меня есть список Car
s (фактически ObservableList
, в ReadOnlyObjectWrapper
), и у меня есть расписание, которое имеет массив из этих Car
s. Я хочу сделать, чтобы автомобили в списке были @JsonManagedReference
, а автомобили в расписании - @JsonBackReference
.Как настроить управляемую ссылку в списке с Джексоном?
Вот управляемая ссылка часть:
private final ReadOnlyObjectWrapper<ObservableList<Car>> cars = new ReadOnlyObjectWrapper<>(new ObservableList(carExtractor()));
@JsonManagedReference("car")
@SuppressWarnings("unused") // Called by Jackson to deserialize cars
private void setCars(ObservableList<Car> cars){
this.cars.set(cars);
}
А вот моя обратная ссылка часть (график):
@JsonBackReference("car")
private Car[] lanes;
Но когда я пытаюсь десериализации это, я получаю это:
Caused by: java.lang.IllegalArgumentException: Can not handle managed/back reference 'car': no back reference property found from type [collection type; class com.neonorb.commons.ObservableList, contains [simple type, class com.neonorb.derbypro.core.Car]]
Я думал, простой способ исправить это, чтобы иметь микширование и применить это к списку, чтобы сами автомобили получают управляемый ссылочный атрибут, а не список. Но проблема в том, что у меня есть несколько списков с разными типами (то есть Group
), поэтому я не могу применить это ко всему классу ObservableList
.
Раньше в расписании у меня был номер индекса для места в списке, мы хотели, но это может раздражать переупорядочивание списка и тому подобное. Я хочу чистое указание, а не индекс.
Я не хочу, чтобы массив в расписании был ссылкой на список, я хочу, чтобы каждый автомобиль в массиве был ссылкой на каждый автомобиль в списке.