Я пытаюсь «обновить» сущность (Foo), которая выглядит следующим образом:
public class Foo {
//...
@OneToMany(mappedBy = "fooRef", fetch = FetchType.LAZY)
private List<Bar> bars;
}
public class Bar {
//...
@Column(name = "FOO_ID")
private Long fooRef;
@Column(name = "STATE")
@Enumerated(EnumType.STRING)
private State state;
}
Поскольку Spring JPA не реализует метод обновления , я просто запрашиваюсущность снова.Это код, который не работает, и я не знаю, почему:
for(int i=0; i<MAX_RETRIES; i++) {
List<Bar> bars = foo.getBars();
// check bars state
if(someBarIsBad) {
try {
TimeUnit.SECONDS.sleep(delay);
} catch (InterruptedException ignored) {
}
} else {
break;
}
foo = fooRepo.findById(fooId); // "refresh"
}
Цель состоит в том, чтобы продолжить повторную попытку, пока все бары не будут иметь желаемое состояние.Тест, который я делаю, - это установка точки останова в последней инструкции цикла, поэтому, когда она прерывается, я беру таблицу и изменяю состояние всех баров на желаемое, чтобы затем выйти из цикла.Дело в том, что новый вернул foo
, bars
не отражает изменения, которые я сделал.
Я пытался снять сон, но это не проблема.Я думаю, что это должно быть что-то с отображением.