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"?



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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.