2012-04-20 2 views
0

У меня есть следующие модели:Scala Lift - MongoDB значение INT поля становится отрицательной

class Recording private() extends MongoRecord[Recording] with ObjectIdPk[Recording] { 

    def meta = Recording 

    object time extends IntField(this) 
    object fulltime extends IntField(this) 

} 

Когда я делаю следующее:

var time = System.currentTimeMillis()/1000 
var fulltime = System.currentTimeMillis() 

Recording.createRecord. 
time(time.toInt). 
fulltime(fulltime.toInt). 
save 

Поле "Время" правильно хранится как "1334919100" , но поле «fulltime» сохраняется как «-815728745», что происходит здесь? Есть ли что-то, что мне нужно сделать для того, чтобы принять временную метку полной длины в миллисекундах?

Любая помощь очень ценится, заранее спасибо :)

ответ

0

System.currentTimeMillis возвращает Long. Вам только повезло, что он работает в корпусе time. В fulltime вы испытываете переполнение целых чисел. (Это уже происходит в вызове toInt.) Выберите LongField для обоих объектов.

+0

Пробовал менять IntField (это) на LongField (это), но все равно получаю отрицательное значение? – jhdevuk

+0

У вас все еще есть 'toInt'? – Debilski

+0

Да, должен ли я избавиться? – jhdevuk

Смежные вопросы