2009-10-28 5 views
7

JPAクエリでCURRENT_DATEを使用する方法の例を教えてもらえますか?JPAクエリでCURRENT_DATEを使用する例

CURRENT_DATEがJPAで指定されていますが、動作させることができませんでした。私はいつもunexpected token [CURRENT_DATE]の例外を受け取ります。 JPAで指定されているので、すべてのプロバイダはそれに従うべきですか?

私はEclipseLink 2.0 BTWを使用しています。

答えて

12

それはそうのように使用することができます:を設立

Query query = manager 
    .createQuery("SELECT c FROM CITIES c WHERE c.founded = CURRENT_DATE"); 
for (Object city : query.getResultList()) { 
    System.out.println(city); 
} 

は...一時的なタイプです:

@Column(name = "FOUNDED") 
    @Temporal(TemporalType.DATE) 
    private Date founded = new Date(); 

ない良い例が、あなたのアイデアを得ます。私はEclipselink 1.1.2を使用しています

+0

あなたは本当に近いです。私はあなたの返事を見る直前にそれを得ました。 表xからxを選択x.id = 1(x.lastModified-CURRENT_DATE)> = 365 日付の計算を使用する必要があります。 – javydreamercsw

+0

JPAを使用して日時計算を行うことは可能ですか?あなたは、差異を曜日に変換する機能を持たなければなりません(数分や数ヶ月や数千年などではありません)。私はそのような機能を認識していません。 Javaで日付演算を行い、結果の範囲との比較を選択するだけです。 – McDowell

+0

これはJPAの欠陥または機能の欠落と思われます。私はそれを私が推測するようにしなければならない。ありがとう! – javydreamercsw

3

Expression Frameworkを使用している場合は、Expressionorg.eclipse.persistence.expressions.Expression)オブジェクトにExpression currentDateDate()メソッドがあります。

+0

私はそれを試す必要がありますが、私は、永続性プロバイダへの依存を避けるために、一般的なJPAクエリを使用しないようにしていました。 – javydreamercsw

4

この質問に対する答えは、JPA経由で値を取得してからプレーンJavaで計算していました。

関連する問題