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.