92

in と同様に、 in EnumListFieldLift/Record/Squerylを作成しようとしています。ストレージ タイプは、Long/BIGINT である必要があります。私が定義した場合、私はそれを理解しています:MappedEnumListLiftMapper

def classOfPersistentField = classOf[Long]

次に、Squeryl は BIGINT 列を作成する必要があることを認識します。setFromAny()そして、Longを渡して値を設定するために使用することを知っています。私が得られないのは次のとおりです。

フィールドの値はどのように読み取られますか? を使用するvalueBoxと、 が取得Seq[Enum#Value]され、それを Long に変換する方法がわかりません。

Squeryl に mySeq[Enum#Value]を Long に変換するか、Long を返す「通常の」ゲッターと競合しない「ゲッター」を定義するにはどうすればよいですか?

4

1 に答える 1

1

検証ロジックを正しく実装していません。Record フィールドを検証する正しい方法はオーバーライドすることです

def validations: List[ValidationFunction]

ここで、ValidationFunction は型エイリアスです

type ValidationFunction = ValueType => List[FieldError]

そしてあなたの場合は ValueType == String です。

次の問題はドメイン特性です。検証の呼び出しはクラス定義にインライン化されているため、フィールドが構築されるときに呼び出されます。

于 2018-03-14T07:57:09.223 に答える