EnumListField
J'essaye de faire un dans Lift / Record / Squeryl, similaire à MappedEnumList
in 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"?
Réponses:
vous implémentez votre logique de validation de manière incorrecte. La bonne façon de valider un champ d'enregistrement est de remplacer
où ValidationFunction est un alias de type
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.
la source