好的,所以我让用户输入一个日期,该日期将在 java 中使用em.createQuery进行查询。正如您从屏幕截图中看到的那样,我将输入数据输入为pattern="dd-MMM-yy(这就是它在服务器中的存储方式),但我也尝试过没有模式标签,但它仍然无法正常工作.实际的错误是在setQueryParams(q)虽然我一直无法弄清楚它是什么。有人知道我可能会在哪里看吗?谢谢。
问问题
15989 次
2 回答
1
You haven't shown us what q
is, but it sounds like you are giving a java.lang.String
where a java.util.Date
is expected.
Also, what is up with writing strings like
queryStr += " and c." + "dateCreated" + " >=:" + ...
? that looks like a pain to maintain/read.
于 2013-01-17T17:28:14.480 回答
1
我同意马特 b,看起来您正在提供一个字符串并期待一个日期(尽管很难阅读屏幕截图上的文字)。看一下SimpleDateFormat,并使用“解析”方法从字符串派生日期对象。
编辑:
您的日期看起来像这样的字符串格式:
2013 年 1 月 1 日星期二 00:00:00 EST
这是应该解析该格式的字符串的代码:
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 的确切格式。
当然,这一切都假设 q 是一个字符串,根据您的日志,情况似乎就是这样。
于 2013-01-17T17:35:06.087 回答