2016-09-28 6 views
3

私は、H2/Postgresqlと組み合わせてスターターjpaを使用するSpringブート1.4.xアプリケーションを持っています。私はインスタント(Instant.now()、Java 8: What's the difference between Instant and LocalDateTime?回答に基づいて)と日付を格納するエンティティを持って、関連付けられたテーブルはタイムスタンプとしてこのフィールドを格納します。私はセットアップに(Timestamp.from(インスタント)とtimestamp.toInstantを())に動作するようですsql.Timestamps &その逆にインスタントのを変換コンバータを持っていた仕事に格納するためのSpring起動データのみの日付の照会JPA/Java 8インスタント?

私の質問JPAリポジトリを使用してこの瞬間のみを使用して日付で照会する簡単な方法があるかどうかです。

List<Orders> findBySaleTime(.... day)

それとも私は2つの瞬間&クエリの間で操作を行うには一日に変換する方法を見つけることを余儀なくしていますか?

+0

私の答えが役に立っていて、うまくいけば、解決策としてマークしてください。そうでなければ教えてください。私は別の答えを探します。 – xenteros

答えて

3

二つのアプローチがあります。

第一1:

List<Orders> findBySaleTimeBetween(DateTime start, DateTime end); 

第二1:

List<Orders> findBySaleTime(DateTime date); 

それはできるだけ丸みを帯びた日付を保存しようとする価値があるので、あなただけが必要な場合日、すべてのエンティティの特定の値に時間と分を設定します。

+0

これはJava 7の日付のようですか? – Busata

+0

私はJava 8の日付を渡したいと思う...なぜあなたはあなたのサービスのアダプタを作ることができないのですか? – xenteros

+0

私は何を適応させる必要がありますか?java 8 - > java 7 date?それは少しばかげていいでしょうか? – Busata

1
public List<SaleOrder> findByDate(String date) { 
    Instant startOfDay = Instant.parse(date).truncatedTo(ChronoUnit.DAYS); 
    Instant endOfDay = startOfDay.plus(Duration.ofDays(1)); 

    return saleOrderRepository.findBySaleTimeAfterAndSaleTimeBefore(startOfDay, endOfDay); 
} 

ここで、日付はクライアントから渡されたUTCの日付で、java 8の日付でこれを行うのが最も簡単なようです。 (クレジットをListeへ& yawkat on freenode #javaのヘルプ/ポインター)

関連する問題