Cómo: Campo personalizado en Lift-Record-Squeryl

92

Estoy tratando de hacer un EnumListFielden Lift / Record / Squeryl, similar a MappedEnumListin LiftMapper. El tipo de almacenamiento debe ser Long / BIGINT. Entiendo que si defino:

def classOfPersistentField = classOf[Long]

Entonces Squeryl sabrá que debe crear una columna BIGINT. Y sé que se usa setFromAny()para establecer el valor, pasando Long. La única pieza que no entiendo es:

¿Cómo leerá el valor del campo? Si lo usa valueBox, obtendrá un Seq[Enum#Value], y no sabrá cómo convertirlo en un Long.

¿Cómo le digo a Squeryl que convierta my Seq[Enum#Value]a un Long, o defina un "getter" que devuelva un Long y que no entre en conflicto con los getter (s) "normales"?

Sebastien Diot
fuente
1
Este enlace podría ayudar: stackoverflow.com/questions/12175645/squeryl-custom-field-types
Mandar Pandit
no es posible, tienes que probarlo de otra forma de series que sean similares a tus necesidades. para ello, puede probar la ayuda de MSDN.
SUNIL MURARKA

Respuestas:

1

está implementando su lógica de validación incorrectamente. La forma correcta de validar un campo de registro es anular

def validations: List[ValidationFunction]

donde ValidationFunction es un alias de tipo

type ValidationFunction = ValueType => List[FieldError]

y en su caso ValueType == String.

El siguiente problema es el rasgo de su dominio. Debido a que su llamada para validar está incluida en la definición de la clase, se llamará cuando se construya su campo.

Gucci
fuente
No he usado Scala, y por lo tanto Lift / Record / Squeryl, durante más de 5 años. Lo olvidé por completo, por lo que ya no estoy calificado para decidir si su respuesta es correcta y resuelve el problema. No estoy seguro de cuál debería ser el "proceso" de Stack-Overflow en este caso. Preguntaré en "meta" ...
Sebastien Diot
"Meta" dijo "espera y verás"; si su respuesta obtiene un montón de +1, entonces es "probablemente correcto", y puedo aceptarlo ...
Sebastien Diot