92

我正在尝试EnumListField在 Lift/Record/Squeryl 中制作一个,类似于MappedEnumListin LiftMapper。存储类型应为 Long/BIGINT。我明白,如果我定义:

def classOfPersistentField = classOf[Long]

然后 Squeryl 将知道它应该创建一个 BIGINT 列。而且我知道它用于setFromAny()设置值,传入 Long。我没有得到的一件是:

它将如何读取该字段的值?如果它使用valueBox,它会得到一个Seq[Enum#Value],它不知道如何把它变成一个 Long 。

我如何告诉 Squeryl 将 my 转换Seq[Enum#Value]为 Long,或者定义一个返回 Long 且与“正常”getter 不冲突的“getter”?

4

1 回答 1

1

您正在错误地实现您的验证逻辑。验证记录字段的正确方法是覆盖

def validations: List[ValidationFunction]

其中 ValidationFunction 是类型别名

type ValidationFunction = ValueType => List[FieldError]

在您的情况下,ValueType == String。

下一个问题是您的域特征。因为您对 validate 的调用已内联到类定义中,所以将在构造字段时调用它。

于 2018-03-14T07:57:09.223 回答