HowTo: campo personalizado em Lift-Record-Squeryl

92

Estou tentando fazer um EnumListFieldem Lift / Record / Squeryl, semelhante a MappedEnumListem LiftMapper. O tipo de armazenamento deve ser Long / BIGINT. Eu entendo que se eu definir:

def classOfPersistentField = classOf[Long]

Então Squeryl saberá que deve criar uma coluna BIGINT. E eu sei que usa setFromAny()pra definir o valor, passando no Long. A única peça que não entendo é:

Como ele lerá o valor do campo? Se usar valueBox, receberá um Seq[Enum#Value]e não saberá como transformá-lo em um Longo.

Como faço para dizer ao Squeryl para converter meu Seq[Enum#Value]em um Long ou definir um "getter" que retorna um Long, e que não entra em conflito com os getter "normais"?

Sebastien Diot
fonte
não é possível, você tem que tentar outra forma de série que seja semelhante às suas necessidades. para isso, você pode tentar a ajuda do MSDN.
SUNIL MURARKA

Respostas:

1

você está implementando sua lógica de validação incorretamente. A maneira correta de validar um campo de registro é substituir

def validations: List[ValidationFunction]

onde ValidationFunction é um alias de tipo

type ValidationFunction = ValueType => List[FieldError]

e no seu caso ValueType == String.

O próximo problema é o seu traço de domínio. Como sua chamada para validar está embutida na definição de classe, ela será chamada quando seu campo for construído.

Gucci
fonte
Eu não uso Scala e, portanto, Lift / Record / Squeryl, há mais de 5 anos. Esqueci completamente, por isso não sou mais qualificado para decidir se sua resposta está correta e resolve o problema. Não tenho certeza de qual deve ser o "processo" Stack-Overflow neste caso. Vou perguntar em "meta" ...
Sebastien Diot
"Meta" disse "espere para ver"; se a sua resposta obtiver muitos +1, então é "provavelmente certo", e eu posso aceitar ...
Sebastien Diot