Llamando a métodos @Transactional desde otro hilo (Ejecutable)

¿Existe alguna solución sencilla para guardar datos en la base de datos utilizando JPA en un nuevo hilo?

Mi aplicación web basada en Spring permite al usuario administrar tareas programadas. En tiempo de ejecución, puede crear e iniciar nuevas instancias de tareas predefinidas. Estoy usando el TaskScheduler de primavera y todo funciona bien.

Pero necesito guardar el resultado booleano de cada tarea activada en la base de datos. ¿Cómo puedo hacer esto?

EDIT: Tengo que generalizar mi pregunta: Necesito llamar a un método en mi clase @Service desde las tareas. Debido a que el resultado de la tarea debe ser "procesado" antes de guardarlo en la base de datos.

EDIT 2: La versión simplificada de mi código problemático viene aquí. Cuando se llama a saveTaskResult () desde el programador, el mensaje se imprime pero no se guarda nada en db. Pero cada vez que llamo a saveTaskResult () desde el controlador, el registro se guarda correctamente en la base de datos.

@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);
    }

}

Respuestas a la pregunta(2)

Su respuesta a la pregunta