在DB中检索超过5分钟的元素

时间:2012-08-26 19:07:39

标签: java

我正在使用Play框架版本1.2.5,我想检索所有未连接5分钟会话的连接用户,然后我想将他们的连接状态设置为“已断开连接”。< / p>

这是我的模特:

@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命令)

感谢您的帮助

2 个答案:

答案 0 :(得分:6)

Date.getTime()返回毫秒。

试试这个:

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

答案 1 :(得分:2)

使用Joda时间库。它可以避免像你这样的错误:5 * 60是300毫秒。您正在寻找的时间类似于new DateTime().plusMinutes(-5)