Я не совсем уверен, в чем заключается моя проблема, поскольку я экспериментирую в двух областях, с которыми у меня мало опыта: JPA и Futures (с использованием заданий и обещаний Play! Framework).
Iиметь следующий бит кода, который я хочу вернуть объект Meeting, когда одному из полей этого объекта было присвоено значение, другим потоком из другого HTTP-запроса.Вот что у меня есть:
Promise<Meeting> meetingPromise = new Job<Meeting> () {
@Override
public Meeting doJobWithResult() throws Exception {
Meeting meeting = Meeting.findById(id);
while (meeting.bbbMeetingId == null) {
Thread.sleep(1000);
meeting = meeting.refresh(); // I tried each of these
meeting = meeting.merge(); // lines but to no avail; I
meeting = Meeting.findById(id); // get the same result
}
return meeting;
}
}.now();
Meeting meeting = await(meetingPromise);
Как я отмечаю в комментариях, там есть три строки, каждая из которых, я думаю, должна позволить мне обновить содержимое моего объекта из базы данных.Из отладчика кажется, что эти вызовы обновляют отношения многие-к-одному, но отдельные значения - нет.
Мой Meeting
объект расширяет Play!Модель Framework, и для удобства, вот метод refresh
:
/**
* Refresh the entity state.
*/
public <T extends JPABase> T refresh() {
em().refresh(this);
return (T) this;
}
и метод merge
:
/**
* Merge this object to obtain a managed entity (usefull when the object comes from the Cache).
*/
public <T extends JPABase> T merge() {
return (T) em().merge(this);
}
Итак, как я могу обновить мою модель избазы данных?