私はこのリポジトリを持っている:スプリングデータでネイティブSQLを使用しないでください。
public interface MessageRepository extends JpaRepository<Message, Long> {
Message findById(long id);
@Query(value = "SELECT * from message where sent = false and expire <= current_timestamp ", nativeQuery = true)
List<Message> findAllReadyMessages();
}
ネイティブSQL
を使用しないように良いアイデアと新しい日付を毎回押しますか?例:
List<Message> findAllBySentForProcessingFalseAndExpireIsLessThanEqual(Date expire);
恩恵と欠点は何ですか?
を試してみては、ネイティブクエリと日付を渡すの間に優れている上で答えることはできませんが、私は 'Date'オブジェクトを渡します。かつては、データベースがJavaアプリケーションがホストされていたサーバーとは異なるタイムゾーンのサーバー上にあったプロジェクトで作業しました。だから、 'current_timestamp'を使うことができませんでした。さもなければ問題になりました。だから私はいつもアプリがそのような問題を避けるために日付を処理させることをお勧めします。 – BackSlash
@BackSlashなぜ、正しいタイムゾーンで動作するようにデータベースを構成していないのですか? – Kayaman
@カヤマン私たちはできなかったから。データベースは2つの他のアプリケーション間で共有され、再構成すると2つのアプリケーションを部分的に書き換える必要がありました。 – BackSlash