2011-07-30 10 views
1

Liftで符号なしマップされた整数を定義することはできますか?私はそれについて何も見つけることができませんでした。Scala/Lift Mapper - 符号なしMappedInt

class Project extends LongKeyedMapper[Project] with IdPK { 
    def getSingleton = Project 
    ... 
    object budget extends MappedInt(this) // should be unsigned! 
    ... 
} 

答えて

0

scalaまたはjavaに符号なし整数がないため、実行時検査を作成するだけで済みます。このようなものは、それを行う必要があります:(それをテストしていない)

object budget extends MappedInt(this) { 
    override def validations = { 
    ((value:Int) => 
     if (value < 0) 
     FieldError(fieldOwner, Text("Budget must not be negative"))::Nil 
     else 
     Nil) 
    :: super.validations 
    } 
} 
+0

あなたの答えをありがとう!ただし、unsignedは、値が負ではないことを意味するだけでなく、異なる範囲を暗示する(正の範囲が2倍になる)ことを意味します。さらに、スキーマは、大きな整数を受け入れるように、データベース(私の場合はmysql)に "unsigned"属性を設定する必要があります。 2147483647より大きい。しかし、私はそれがLiftのマッパーでは不可能だと思う? –

+1

@goldmar代わりに 'Long'を使わないのはなぜですか? – Nishant

+0

私はこのスキーマがこれをサポートしているとは思わない。データベーススキーマに固有のニーズがある場合は、いつでも自分で作成または変更できます。 –

関連する問題