나는를 만들기 위해 노력하고있어 EnumListField
유사 리프트 / 기록 / Squeryl에 MappedEnumList
에서 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와 충돌하지 않는 방법은 무엇입니까?
답변
유효성 검사 논리를 잘못 구현하고 있습니다. 레코드 필드의 유효성을 검사하는 올바른 방법은
def validations: List[ValidationFunction]
여기서 ValidationFunction은 유형 별명입니다.
type ValidationFunction = ValueType => List[FieldError]
그리고 귀하의 경우 ValueType == String.
다음 문제는 도메인 특성입니다. 유효성 검사 호출은 클래스 정의에 인라인되므로 필드가 생성 될 때 호출됩니다.