Nasıl Yapılır: Lift-Record-Squeryl'de Özel Alan


92

Bir yapmaya çalışıyorum EnumListFieldbenzer Kaldırma / Kaydet / Squeryl, içinde MappedEnumListde LiftMapper. Depolama türü Uzun / BÜYÜK olmalıdır. Anlıyorum eğer tanımlarsam:

def classOfPersistentField = classOf[Long]

O zaman Squeryl bir BIGINT sütunu oluşturması gerektiğini bilecektir. Ve setFromAny()Long'u geçerek değeri ayarlamak için kullandığını biliyorum . Anlamadığım tek parça:

Alanın değerini nasıl okuyacak? Kullanırsa valueBox, bir alacak Seq[Enum#Value]ve bunu bir Long'a nasıl çevireceğini bilemeyecek.

Squeryl'e kendimi Long'a dönüştürmesini Seq[Enum#Value]veya Long döndüren ve "normal" alıcı (lar) la çelişmeyen bir "alıcı" tanımlamasını nasıl söylerim ?



bu mümkün değil, tıpkı ihtiyacınıza benzeyen başka bir dizi yöntemi denemelisiniz. bunun için MSDN yardımını deneyebilirsiniz.
SUNIL MURARKA

Yanıtlar:


1

doğrulama mantığınızı yanlış uyguluyorsunuz. Bir Kayıt alanını doğrulamanın doğru yolu geçersiz kılmaktır

def validations: List[ValidationFunction]

ValidationFunction bir tür diğer adıdır

type ValidationFunction = ValueType => List[FieldError]

ve sizin durumunuzda ValueType == String.

Sonraki sorun, Etki Alanı özelliğinizdir. Doğrulama çağrınız sınıf tanımına dahil olduğundan, alanınız oluşturulduğunda çağrılacaktır.


Scala'yı ve dolayısıyla Lift / Record / Squeryl'i 5 yıldan fazla bir süredir kullanmadım. Her şeyi unuttum ve artık cevabınızın doğru olup olmadığına ve sorunu çözüp çözmediğine karar verecek nitelikte değilim. Bu durumda Stack-Overflow "işleminin" ne olması gerektiğinden emin değilim. "Meta" da soracağım ...
Sebastien Diot

"Meta" "bekle ve gör" dedi; cevabınız bir sürü +1 alırsa, o zaman "muhtemelen doğrudur" ve onu kabul edebilirim ...
Sebastien Diot
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.