2
其中的Oracle表的看起來像這樣,我沒有改變這個的選項:Oracle日期和休眠/ JPA映射
REPORTING_PERIOD | REPORTING_DATE (Oracle DATE type)
-------------------------------
1140 01-FEB-12
1139 01-JAN-12
的JPA實體(與Hibernate作爲提供程序),它看起來像這樣:
@Column(name="REPORTING_PERIOD")
private long reportingPeriod;
@Temporal(TemporalType.DATE)
@Column(name="REPORT_DATE")
private Date reportDate; //java.util.Date
現在,讓我們通過我的單元測試: (我使用Spring數據爲JPA庫) 下面一行REPORTING_PERIOD列查詢DB
ReportingPeriod period1 = reportingPeriodRepository.findByMaxReportingPeriod();
assertNotNull(period1); // works fine and entity is fetched
System.out.println(period1.getReportDate());
的出放SOP的是2012-02-01 - 注意從值的自動轉換在分貝01-FEB-12
現在,如果我直接通過使用'01日期查詢 - FEB-12' ,因爲我下面做,我沒有得到任何結果:
ReportingPeriod period2 = reportingPeriodRepository.findByReportDate(period1.getReportDate());
assertNotNull(period2);
注意,我使用的,我可以在前面的語句成功獲取相同的實體日期字段。
這也不工作:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
ReportingPeriod period3 = reportingPeriodRepository.findByReportDate(df.parse("2012-02-01"));
assertNotNull(period3);
我如何能查詢(用HQL也將確定)的REPORTING_DATE作爲帕拉姆時分貝值是01-FEB-12非常感謝任何幫助。
你確定你正在使用的格式是正確的將字符串解析爲'Date'?你可以嘗試'DateFormat df = new SimpleDateFormat(「yyyy-MM-dd」);'? – 2012-04-28 18:10:29
@βнɛƨнǤʋяʋиɢ - 不,我早些時候也嘗試過,但不起作用。奇怪的是,Hibernate不報告任何錯誤,只是沒有結果。 – SRK 2012-04-28 18:25:27
你能不能給我們查詢我認爲錯誤/問題是在查詢或方法findByReportDate – esej 2012-04-28 18:35:47