我有這個資源庫:我是否必須在spring數據中避免原生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
@Kayaman因爲我們做不到。數據庫在另外兩個應用程序之間共享,重新配置它需要部分重寫兩個應用程序。 – BackSlash