Одна из таблиц Oracle выглядит так, что я не имею возможность изменить это:Oracle DATE и Hibernate/отображение 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 Data JPA для хранилищ) следующей строки запросов БДА по столбцам REPORTING_PERIOD
ReportingPeriod period1 = reportingPeriodRepository.findByMaxReportingPeriod();
assertNotNull(period1); // works fine and entity is fetched
System.out.println(period1.getReportDate());
из положить СОП является 2012-02-01 - Обратите внимание на автоматическое преобразование значения в дБ 01-февралем-12
Теперь, если я запрос непосредственно по дате с использованием '01 - февраль-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-февраль-12 очень ценятся.
Вы уверены, что формат, который вы используете правильно проанализировать строку до 'Date'? Можете ли вы попробовать 'DateFormat df = new SimpleDateFormat (« yyyy-MM-dd »);'? –
@ βнɛƨн Ǥʋяʋиɢ - Нет, я на самом деле тоже пытался это сделать раньше, но не работает. Как ни странно, Hibernate не сообщает никаких ошибок, только никаких результатов. – SRK
Можете ли вы дать нам запрос ('NamedQuery' или запрос Critera или что-то, что вы используете.) Я думаю, что ошибка/проблема находится в запросе или в методе findByReportDate – esej