2012-08-26 23 views
0

我使用的是播放框架版本1.2.5,我想檢索所有沒有更新其會話5分鐘的連接用戶,然後我想設置他們的連接狀態爲「斷開」。在數據庫中檢索5分鐘以前的元素

這裏是我的模型:

@Entity 
public class User extends Model { 

    @Required 
    public String name; 

    public boolean isConnected; 

    public Date lastConnectionDate; 

} 

這裏是更新用戶的工作:

Date fiveMinsAgo = new Date(new Date().getTime() - 5 * 60); 
List<User> list = User.find("select u from User u where u.isConnected = true and u.lastConnectionDate < ?", fiveMinsAgo).fetch(); 

for (User user : list) { 
    // We set these accounts as disconnected 
    user.isConnected = false; 
    user.save(); 
} 

此代碼似乎並不工作。即使用戶設置爲「斷開連接」,即使它們的lastConnectionDate不比5分鐘前更早。 我做錯了什麼?

有沒有更好的方法/代碼來做我想做的事情? (像一個UPDATE命令)

謝謝您的幫助

回答

6

Date.getTime()返回毫秒。

試試這個:

Date fiveMinsAgo = new Date(new Date().getTime() - 5 * 60 * 1000); 
+0

謝謝你們兩位的回答,它解決了我的問題!我不知道發生了什麼,我讀了javadoc,但是我沒有看到這個單元是在ms。順便說一下,我的做法是否正確?或者我應該使用UPDATE查詢? –

2

使用Joda時庫。它可以避免諸如你的錯誤:5 * 60是300毫秒。你正在尋找的時間可能類似於new DateTime().plusMinutes(-5)

相關問題