gpt4 book ai didi

scala - 如何: Custom Field in Lift-Record-Squeryl

转载 作者:行者123 更新时间:2023-12-03 04:59:05 27 4
gpt4 key购买 nike

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

def classOfPersistentField = classOf[Long]

然后 Squeryl 就会知道它应该创建一个 BIGINT 列。我知道它使用 setFromAny() 来设置值,并传入 Long。我没有得到的一件是:

它将如何读取字段的值?如果它使用 valueBox,它将得到一个 Seq[Enum#Value],并且它不知道如何将其转换为 Long。

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

最佳答案

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

def validations: List[ValidationFunction]

其中 ValidationFunction 是类型别名

type ValidationFunction = ValueType => List[FieldError]

在你的例子中 ValueType == String。

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

关于scala - 如何: Custom Field in Lift-Record-Squeryl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693296/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com