2012-06-23 20 views
15

Estoy escribiendo la aplicación Playframework 2.0 usando Scala y Anorm para acceder a db.¿Cuál es el propósito de Anorm's Pk?

Actualmente estoy usando Pk[Long] para id campos y me preocupa el adicional get llamada necesaria para acceder al valor real. Así que empiezo a usar plain Long para los campos id y todo sigue funcionando perfecto.

¿Para qué sirve Pk, y debería usarlo en lugar de tipos simples? ¿El Pk me da características/beneficios adicionales sobre los tipos simples?

Respuesta

18

Pk le permite especificar una clave principal tipada.

Además, supongamos que tiene un modelo artificial de esta manera:

case class MyModel(id: Pk[Long], foo: String) 

Usted tiene el beneficio de la construcción de una instancia de su modelo con:

MyModel(anorm.NotAssigned, "notKnownAtRuntime") 

... si su base de datos es responsable para generar sus claves, o de lo contrario:

MyModel(anorm.Id(123L), "knownAtRuntime") 
+0

Sé acerca de 'NotAssigned', es útil, ya que id genera automáticamente lly. Solo pensé que había algo más. ¡Gracias de todos modos! – lambdas

+4

¿Por qué no usar 'Option [Long]' y luego inicializar sus objetos con 'None' o' Some (123L) '? – maklemenz

+2

@mklemenz porque '' 'clase de caso MyModel (id: Pk [Long], id2: Pk [Long])' '' no debería compilar donde '' 'clase de caso MyModel (id: Option [Long], id2: Option [ Long]) '' 'compila –

Cuestiones relacionadas