2011-08-04 19 views
1

....私はそれをコーディング日付部分を設定するのではなく、ハードにはどうすればよいのJava永続日付クエリ

string qString = "select e from table where id= :id and trunc(Date) = TO_Date('03/04/2010','MM/DD/YYYY') 

Query newQuery = entityManager.createNamedQuery(qstring) 
newQuery.setParameter("id",id); 

私は試しました newQuery.setParameter("date",date,TemporalType.Date)しかし、それは私のために働いていません。すべてのポインタ? は、私はまた、 '(日付、 『日付』)newQuery.setParameterちょうどを使用しようとして私を終わる引数として日付を使用...

string qString = "select e from table where id= :id and trunc(Date) = :date 

を、私は、彼らが正しくフォーマットされていないと信じていますこれを行う正しい方法は何ですか?

* UPDATE ***私は、SQLの日付でそれをやろうとしています。あなたは投稿し続けるだろう!

+0

「?1」などの数値ワイルドカードを使用してみましたか? – Jeremy

+0

数値ワイルドカードとは何ですか?私はそれを聞いたことがないどのようにそれはwokrですか? – Kevin

+0

'em.createQuery(" where table = id 1? ")。setParameter(1、id)' – Jeremy

答えて

1

クエリを実行するのと同じように、文字列に格納するのに間違っていますか?

String date = '03/04/2010'; 
String dateFormat = 'MM/DD/YYYY'; 

String qString = "SELECT e FROM table WHERE id = :id 
AND trunc(DATE) = TO_Date(date,dateFormat)"; 
+0

正解、それはうまくいくだろうが、私はこれを行うより良い方法があると思う、私は良い慣行があなたがもっと学ぶように感じる。私はそのようにすることができますが、それはちょうど良い感じではありません – Kevin

+0

私はこれをハードコーディングよりも良い練習と思います。値を変更したい場合は、ファイルの一番上でそれらを一度変更し、彼らが参照しているすべての場所が変更されました。 –

+0

ハードコードされた値を渡すよりも良い方法だと私は同意しますが、文字列を渡すのではなく、パラメータを設定することで日常的に渡します。あなたは永続性を扱う方がより現実的だろうということに同意しませんか? – Kevin