0

我正在使用播放框架版本 1.2.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 命令)

感谢您的帮助

4

2 回答 2

6

Date.getTime() 返回毫秒。

试试这个:

Date fiveMinsAgo = new Date(new Date().getTime() - 5 * 60 * 1000);
于 2012-08-26T19:13:32.007 回答
2

Use the Joda time library. It avoids errors such as yours: 5 * 60 are 300 milliseconds. The time you are looking for would be something like new DateTime().plusMinutes(-5).

于 2012-08-26T19:15:19.080 回答