好的,所以我让用户输入一个日期,使用 em.createQuery 在java中查询。正如您从截图中看到的那样,我将输入数据输入为 pattern =“dd-MMM-yy (这就是它存储在服务器中的方式),但我也尝试过没有模式标签,它仍然不起作用。实际的错误是在 setQueryParams(q)但我无法弄清楚它是什么。任何人都知道我可能会在哪里看?感谢。
答案 0 :(得分:1)
您尚未向我们展示q
是什么,但听起来您提供的java.lang.String
预计会java.util.Date
。
此外,编写如
的字符串是什么queryStr += " and c." + "dateCreated" + " >=:" + ...
?这看起来像是维持/阅读的痛苦。
答案 1 :(得分:1)
我同意Matt b,看起来你正在提供一个字符串并期待一个约会(尽管很难阅读截图上的文字)。查看SimpleDateFormat,并使用“parse”方法从String派生Date对象。
编辑:
看起来你的日期是字符串格式,如下所示:
Tue Jan 01 00:00:00 EST 2013
以下是应该以该格式解析字符串的代码:
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]");
注意我这里没有你的完全日期字符串,所以我可能错误地从你的图像中转录它。使用断点或print语句来获取String q的确切格式。
当然,这都是在假设q是一个字符串的基础上,根据您的日志看起来就是这种情况。