실행하기에 너무 긴 PUT 요청이 있습니다. 나는 그것을 비동기로 만들고, continuations (await/promise 기능)을 사용하고 싶다. 내가 작업을 생성 (LongJobThatUpdatesThePassedEntity
은) 즉, DB 트랜잭션 관리 어떻게 내 개체playframework 1.2.x :/async 및 JPA 트랜잭션 대기
public static void myLongPut(@required Long id, String someData) {
MyJpaModel myJpaModel = MyJpaModel.findById(id);
//straightforward modifications
updateMyJpaModel(someData);
myJpaModel.save();
//long processing modifications to entity, involving WS calls
Promise<String> delayedResult = new LongJobThatUpdatesThePassedEntity(id).now();
await(delayedResult);
render(myJpaModel.refresh());
}
수정?
작업 호출 전에 커밋이 있습니까?
작업에 자체 DB 트랜잭션이 있습니까?
LongJobThatUpdatesThePassedEntity
롤백에 문제가있는 경우 updateMyJpaModel
에서 수행 된 수정이 유지됩니까?
마지막으로 render(myJpaModel.refresh())
을 할 수 있습니까? 스트롱 포워드 수정과 긴 수정을 포함 할 예정입니까?
감사의
완료되었습니다. 마침내 .refresh()를 사용하지 않고 대신 Model.findById()를 호출합니다. –