Transacciones de bases de datos en aplicaciones de Scala de marco de juego (anorm)

Estoy desarrollando una aplicación usando Play framework y scala. Estoy usando anorm para la capa de acceso a datos. Y tengo un problema que no pude resolver.

Breve: Quiero poder tener métodos en objetos de acceso a datos (dao) para trabajar dentro de las transacciones, además de ser llamado solo.

Detalles:

Tengo una capa de acceso a datos que consiste en una clase con métodos que solo ejecutan SQL particular sobre la base de datos. Tradicionalmente se ven así:

def list() = DB.withConnection { implicit cn =>
  ...
}

Ahora quiero tener algunos métodos para ejecutar en un ámbito de transacción. Al igual que los métodos tradicionales de servicio de selección y actualización, pero aún así puede ejecutarlos solo. Entonces, lo que tengo en mente es así:

class Service {
  def fooTransacted() = {
    inTransaction {
      val old = dao.select(id = 2)
      val newObj = old.copy(isActive = true)
      dao.update(newObj)
    }
  }

  def fooSinle() = {
    dao.select(id = 2)
  }
}

Lo intenté de varias maneras, pero no pude encontrar ninguna solución.

Respuestas a la pregunta(2)

Su respuesta a la pregunta