したがって、請求日が平均である請求日を取得するために、mysql datediff関数を使用しようとしています。実際のクエリが結果を返すにもかかわらず、Springデータ/ Hibernateネイティブクエリがnullを返す
私のクエリは次のようになります。
select avg(datediff(coalesce(nullableDateTimeColumn, now()), i.createdTimeStamp)) from invoice i
where i.createdTimestamp >= DATE_VARIABLE_HERE and (invoiceStatus = 'TEXT_HERE' or nullableDateTimeColumn is not null)
と私の実際の春のデータレポ定義のようになります。問題は、結果は常にnullであるということです
@Repository
interface InternalInvoiceRepository extends PagingAndSortingRepository<Invoice, Long> {
@Query(value = "select avg(datediff(coalesce(nullableDateTimeColumn, now()), i.createdTimeStamp)) from invoice i " +
"where i.createdTimestamp >= ?1 " +
"and (invoiceStatus = 'TEXT_HERE' or nullableDateTimeColumn is not null)", nativeQuery = true)
BigDecimal getAverageTimeInvoiceEntryTimeForInvoicesNewerThan(LocalDateTime time);
}
、私はリターンを設定してみましたダブルを入力しても動作しませんでした。 log4j.logger.org.hibernate.SQL
をDEBUG
に設定してsqlを見ると、sqlが正しいことになります。私はSQLを実行する場合、私は戻って番号を取得するので、私は実際に結果を返している休止状態で実行されているSQLを知っている。返される値はかなり小さく、通常は0〜5の間です。そのため、奇妙なオーバーフローエラーやそのようなものはありません。これは単純なシナリオのように思えるので、なぜこれが機能していないのか少し不安です。
バージョン:
Spring data: 1.9.2.RELEASE
Spring: 4.2.4.RELEASE
Hibernate: 5.0.7.Final
hibernate-jpa-2.1-api: 1.0.0.Final
クエリの実行時にどのように日付がログに表示されていますか? – djointster
@ScaryWombat私はリポジトリの一部を表示していますが、他にもたくさんの方法がありますが、この問題には何ら関係していません。 – Zipper
'i.createdTimestamp'が' Timestamp'か 'Date'データ・タイプ。 – AppHouze