わかりましたので、ユーザーに日付を入力してもらいます。これは、 em.createQueryを使用して Java で照会されます。スクリーンショットからわかるように、入力データはpattern="dd-MMM-yy (サーバーに格納されている方法) として入力されていますが、パターン タグなしでこれを試してみましたが、まだ機能しません。 . 実際のエラーはsetQueryParams(q)にありますが、私はそれが何であるかを理解することができませんでした. 誰が私がどこを見ているのか考えを持っていますか?ありがとう.
2 に答える
私はマットbに同意します。文字列を指定していて、日付を期待しているようです(ただし、スクリーンショットのテキストを読むのは難しいです)。SimpleDateFormatを見て、「parse」メソッドを使用して文字列からDateオブジェクトを派生させます。
編集:
日付は次のような文字列形式になっているようです。
2013年1月1日火曜日00:00:00EST
その形式の文字列を解析する必要があるコードは次のとおりです。
public static void main(String[] args) {
String dateString = "Tue Jan 01 00:00:00 EST 2013";
SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy");
try {
Date date = format.parse(dateString);
System.out.println(date.toString());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
ログステートメントを見ても、角かっこが文字列の一部であるかどうかはわかりません。角かっこをフォーマットに含める必要がある場合は、次のようにします。
SimpleDateFormat format = new SimpleDateFormat("[EEE MMM dd hh:mm:ss z yyyy]");
ここに正確な日付文字列がないことに注意してください。そのため、画像からの文字列の転記を間違えた可能性があります。文字列qの正確な形式を取得するには、ブレークポイントまたはprintステートメントを使用します。
もちろん、これはすべて、qが文字列であるという仮定の下にあります。ログに基づくと、そのように思われます。
あなたは私たちに何が何であるかを示していませんが、 aが期待される場所q
を与えているようです。java.lang.String
java.util.Date
また、次のような文字列を書くとどうなりますか
queryStr += " and c." + "dateCreated" + " >=:" + ...
? それは維持/読むのが苦痛のように見えます。