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

Jodaタイム ライブラリを使用します。あなたのようなエラーを回避します: 5 * 60are 300 ms. 探している時間は次のようになりますnew DateTime().plusMinutes(-5)

于 2012-08-26T19:15:19.080 に答える