Chamando métodos @Transactional de outro thread (Runnable)

Existe alguma solução simples para salvar dados no banco de dados usando JPA em um novo segmento?

Minha aplicação web baseada em Spring permite ao usuário gerenciar tarefas agendadas. No tempo de execução, ele pode criar e iniciar novas instâncias de tarefas predefinidas. Estou usando o TaskScheduler da primavera e tudo funciona bem.

Mas eu preciso salvar o resultado booleano de cada tarefa disparada no banco de dados. Como posso fazer isso?

EDIT: eu tenho que generalizar minha pergunta: eu preciso chamar um método na minha classe @Service de tarefas. Porque o resultado da tarefa deve ser "processado" antes de salvar no banco de dados.

EDIT 2: versão simplificada do meu código problemático vem aqui. Quando saveTaskResult () é chamado pelo agendador, a mensagem é impressa, mas nada é salvo no banco de dados. Mas sempre que eu chamo saveTaskResult () do controlador, o registro é salvo corretamente no banco de dados.

@Service
public class DemoService {

    @Autowired
    private TaskResultDao taskResultDao;

    @Autowired
    private TaskScheduler scheduler;

    public void scheduleNewTask() {
        scheduler.scheduleWithFixedDelay(new Runnable() {

            public void run() {
                // do some action here
                saveTaskResult(new TaskResult("result"));
            }

        }, 1000L);
    }

    @Transactional
    public void saveTaskResult(TaskResult result) {
        System.out.println("saving task result");
        taskResultDao.persist(result);
    }

}

questionAnswers(2)

yourAnswerToTheQuestion