Выполнение задания является транзакционным. Все, что вы делаете в своей работе, будет передано в конце работы.
Чтобы достичь того, чего вы хотите, вы можете создать вспомогательный класс и вызвать его в главном классе.
Что-то вроде
public class SubJob extends Job {
private Ga ga;
public SubJob(Ga ga) {
this.ga = ga;
}
@Override
public doJob() throws Exception {
ga = ga.merge();
ga.lastUID = msgnums[i-1];
ga.count = count[i-1];
ga.save();
}
}
А на своей основной работе звонишь
new SubJob(ga).now().get();
Ваш подчиненный выполнит сохранение в другой транзакции, которая будет зафиксирована в конце этого задания.
Будьте осторожны, мы при таком способе работы не можем откатить всю основную работу