2012-03-09 10 views
0

温度に関する情報を含む1つの 'Log'エンティティがあります。 私は2つのだけのフィールドを持つレポートを作成しようとしている:JPAでタイムスタンプ間隔を照会する方法は?

quantity : this field will tell how much my search should look 
interval : minutes, hours, days, months, years (this field tells me how much is the interval of the search 

これは私のLogエンティティです:

public class Log implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Integer id; 

    private Timestamp time; 

    private String value; 
    // getters and setters ... 

ユーザーが1 minuteよう通知したときにだから私は(最後の分を探してください少なくとも60レコード)。

または1か月の場合は、先月のすべてのデータを取得する必要があります。

私はこのような何かしようとしている:

log.time < CURRENT_TIMESTAMP AND log.time > :param 

をしかし、どのように、私は、数分に時間を指定することができますか?私の言いたいことは、どのようにしてより具体的な質問ができるのでしょうか?

答えて

3

時間単位が「日」の場合:

Calendar now = Calendar.getInstance(); 
now.add(Calendar.DAY_OF_MONTH, -quantity); 
Date param = now.getTime(); 

があるとして、あなたのクエリを保ち、かつ:paramリクエストパラメータにparamをバインドします。

他の間隔の場合は、Calendar.DAY_OF_MONTHではなく、適切なカレンダーフィールド(HOUR_OF_DAY、MINUTEなど)を使用して同じ間隔で行います。

+0

ありがとうございます! .addメソッドは次のとおりです。 now.add(Calendar.MONTH、-months):最初に現在の日、月、年、次に引く日数、月数、年数を入力します。 –

+0

ありがとう。私は答えを決めた。 –

関連する問題