92
votes

I'm trying to make a EnumListField in Lift/Record/Squeryl, similar to MappedEnumList in LiftMapper. The storage type should be Long/BIGINT. I understand that if I define:

def classOfPersistentField = classOf[Long]

Then Squeryl will know it should create a BIGINT column. And I know it uses setFromAny() to set the value, passing in the Long. The one piece I don't get is:

How will it read the field's value? If it uses valueBox, it will get a Seq[Enum#Value], and it won't know how to turn that into a Long.

How do I tell Squeryl to convert my Seq[Enum#Value] to a Long, or define a "getter" that returns a Long, and that doesn't conflict with the "normal" getter(s)?

1
its not possible, you have to try it other way of series which are just like similier to your requirement. for this you can try MSDN help.SUNIL MURARKA

1 Answers

1
votes

you are implementing your validation logic incorrectly. The correct way to validate a Record field is to override

def validations: List[ValidationFunction]

where ValidationFunction is a type alias

type ValidationFunction = ValueType => List[FieldError]

and in your case ValueType == String.

The next issue is your Domain trait. Because your call to validate is inlined into the class definition, it will be called when your field is constructed.