1

データベース固有ではなく、JPA で可能な最大 (および最小) の日付を表す方法はありますか? 次に、JPA 実装は、使用されている方言に従って、それを正しい値に変換できるはずです。

JPAでない場合は、Hibernate固有のソリューションでも問題ありません。

編集

私たちが使用しているアプリケーションには、日付が指定された範囲内にあるかどうかをテストするいくつかの名前付きクエリがあります

SELECT ... FROM ... WHERE somedate BETWEEN startdate AND end date

範囲が開いている場合 (startdate のみ、または enddate のみ)、1 回の比較だけで異なるクエリを持つ最大日付と最小日付を使用する方が簡単です (これには、回避したい既存のアプリケーションでいくつかの変更が必要になります) )。

編集 2

本当の質問ではない有権者の場合:質問は次のとおりです。

データベースに依存しない方法で可能な最大日付を照会することは可能ですか?

編集 3

アプリケーションは次のように日付を保存しjava.util.Dateています

@Temporal( TemporalType.TIMESTAMP )
private java.util.Date someDate;
4

3 に答える 3

3

DB ニュートラルな方法で最大/最小日付を取得する機能は (まだ) ないと思います。

使用する DBMS に基づいて、Java と DB の両方のストアド関数で対応する定数を定義することをお勧めします。

したがって、次のようなことができます:

Query query = session.createQuery("from Foo where date between :fromDate and :toDate");
query.setParameter("fromDate", DateConstants.MIN_DATE);
query.setParameter("toDate", DateConstants.MAX_DATE);

(私はそれをFOREVERとEPOCHと呼んでいました:P)

または、このような HQL を使用することもできます (DB にストアド関数を作成した場合)

from Foo where date between MaxDate() and MinDate()

于 2012-10-08T10:05:37.463 に答える
1

1 つのオプションは、その情報を提供するデータベース関数を定義することです。使用するデータベース ベンダーごとに定義します。次に、その関数を使用して、「現在使用されている」データベースの最大日付を取得します。

于 2012-10-08T17:21:24.660 に答える
0

Javaで最大の日付値を取得する最良の方法をご覧ください? . Date を Java 型として使用する限り、JPA または Hibernate を使用する場合に違いはありません。例:

import java.util.Date;

@Entity
public class Foo {

   @Id
   @GeneratedValue
   long id;

   Date Bar;

   public void  setBar(Date bar) {
      this.bar = bar;
   }

   public Date getBar() {
      return bar;
   }
}

...

// An Entity
Foo foo;

// set minimum date
foo.setBar(new Date(0));

// set maximum date
foo.setBar(new Date(Long.MAX_VALUE));
于 2012-10-08T06:06:04.137 に答える