2012-04-28 11 views
2

一つは、私はこれを変更するオプションを持っていけない、次のようになります。OracleのDATEおよび休止状態/ JPAマッピングOracle表の

@Column(name="REPORTING_PERIOD") 
private long reportingPeriod; 

@Temporal(TemporalType.DATE) 
@Column(name="REPORT_DATE") 
private Date reportDate; //java.util.Date 

今、私たちは私のユニットテストを通過してみましょう: (私はリポジトリのための春のデータJPAを使用しています) 下の行は

REPORTING_PERIOD列でDBを照会しますSOPの入れ
ReportingPeriod period1 = reportingPeriodRepository.findByMaxReportingPeriod(); 
assertNotNull(period1); // works fine and entity is fetched 
System.out.println(period1.getReportDate()); 

アウトは2012-02-01である - 私は'01を使用して日付で直接問い合わせる場合は、今すぐデシベルの値から自動変換01 - 2月 - 12

に注意してください - 2月-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); 

デシベルの値が01・2月・12大歓迎されているとき、私はのparamとしてREPORTING_DATEで(もOKになりますHQLで)照会することができる方法上の任意の助け。

+0

にデータベース形式と同じ形式を使用してデータを取得するかどうか、我々はあなたが使用しているフォーマットがに正しいかあなたがよろしい確認することができます文字列を 'Date'に解析しますか? 'DateFormat df = new SimpleDateFormat(" yyyy-MM-dd ");'を試すことができますか? –

+0

@βнɛƨнǤʋяʋиɢ - いいえ、私は実際にそれを早くも試みましたが、うまくいきませんでした。不思議なことに、Hibernateはエラーを報告せず、結果だけを報告しません。 – SRK

+0

クエリー( 'NamedQuery'またはCriteraクエリーまたはそれを使用しているもの)を教えてもらえますか?エラー/問題がクエリーまたはメソッドfindByReportDateにあります – esej

答えて

2

reportingPeriodRepository.findByMaxReportingPeriod();で結果を取得しているときに、明示的な日付形式の変換があると思います。したがって

我々は

変更

DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
ReportingPeriod period3 = reportingPeriodRepository.findByReportDate(df.parse("2012-02-01")) 

DateFormat df = new SimpleDateFormat("dd-MMM-yy"); 
ReportingPeriod period3 = reportingPeriodRepository.findByReportDate(df.parse("01-FEB-12")) 
関連する問題