2011-07-30 51 views
1

是否可以在Lift中定義一個無符號映射整數?我找不到任何關於它的事情。Scala/Lift Mapper - unsigned 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

感謝您的回答!但是,無符號不僅意味着該值可能不是負值,而且也意味着不同的範圍(正範圍翻倍)。此外,schemifier應該在數據庫中設置一個「無符號」屬性(在我的情況下是mysql),以便它接受大的整數 - 即。大於2147483647.但我想這對Lift's Mapper來說是不可能的? –

+1

@goldmar爲什麼不用'Long'來代替? – Nishant

+0

我不認爲schemifier支持這一點。如果您對數據庫模式有這樣的特定需求,您可以隨時創建或修改它。 –