Estou tentando fazer um EnumListField
em Lift / Record / Squeryl, semelhante a MappedEnumList
em 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"?
Respostas:
você está implementando sua lógica de validação incorretamente. A maneira correta de validar um campo de registro é substituir
onde ValidationFunction é um alias de tipo
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.
fonte