HowTo: Champ personnalisé dans Lift-Record-Squeryl

92

EnumListFieldJ'essaye de faire un dans Lift / Record / Squeryl, similaire à MappedEnumListin LiftMapper. Le type de stockage doit être Long / BIGINT. Je comprends que si je définis:

def classOfPersistentField = classOf[Long]

Ensuite, Squeryl saura qu'il doit créer une colonne BIGINT. Et je sais qu'il utilise setFromAny()pour définir la valeur, en passant le long. La seule pièce que je n'obtiens pas est:

Comment lira-t-il la valeur du champ? S'il l'utilise valueBox, il obtiendra un Seq[Enum#Value], et il ne saura pas comment le transformer en Long.

Comment dire à Squeryl de convertir my Seq[Enum#Value]en Long, ou définir un "getter" qui renvoie un Long et qui n'entre pas en conflit avec le ou les getter "normaux"?

Sébastien Diot
la source
1
Ce lien pourrait vous aider: stackoverflow.com/questions/12175645/squeryl-custom-field-types
Mandar Pandit
ce n'est pas possible, vous devez l'essayer d'une autre manière des séries qui sont tout comme similaires à vos besoins. pour cela, vous pouvez essayer l'aide MSDN.
SUNIL MURARKA

Réponses:

1

vous implémentez votre logique de validation de manière incorrecte. La bonne façon de valider un champ d'enregistrement est de remplacer

def validations: List[ValidationFunction]

où ValidationFunction est un alias de type

type ValidationFunction = ValueType => List[FieldError]

et dans votre cas ValueType == String.

Le prochain problème est votre trait de domaine. Étant donné que votre appel à valider est intégré à la définition de classe, il sera appelé lorsque votre champ sera construit.

Gucci
la source
Je n'ai pas utilisé Scala, et donc Lift / Record / Squeryl, depuis plus de 5 ans. J'ai tout oublié, et je ne suis donc plus qualifié pour décider si votre réponse est correcte et résout le problème. Je ne suis pas sûr de ce que devrait être le "processus" Stack-Overflow dans ce cas. Je vais demander dans "meta" ...
Sebastien Diot
"Meta" a dit "attendre et voir"; si votre réponse obtient un lot de +1, alors c'est "probablement raison", et je peux l'accepter ...
Sebastien Diot