sql >> データベース >  >> RDS >> PostgreSQL

nativeQueryを使用したSpringBootQueryアノテーションがPostgresqlで機能しない

    わかりました、私は私のためにこの仕事をするために本当に長い時間を費やします、しかし私はついにそれを手に入れました。将来の冒険家やコミュニティにもそれを知らせましょう。

    私のために働いたのは、ここでA.H.によって提示されたインターバルにキャストすることでした:

    select current_timestamp + ( 2 || ' days')::interval;
    

    その場合、ソリューションは次のようになります(2番目のクエリを分析する場合):

    @Query(value = "SELECT n.* from nodes n WHERE n.node_id = 10510 AND n.last_good_ping > CURRENT_DATE - ( :interval )\\:\\:interval ", nativeQuery = true)
    

    または、3番目のクエリの場合(これが私の場合はまさにそれを機能させた方法です)

    @Query(value = "SELECT n.* from nodes n WHERE n.node_id = 10510 AND n.last_good_ping > CURRENT_DATE - ( ?1 )\\:\\:interval", nativeQuery = true)
    

    ::のエスケープに注意してください \\:\\:になります 。 SQLエディタでテストする純粋なSQLでは、::を使用します。 、ただし、@Query内のリポジトリコード内 これらのキャストサインはエスケープする必要があります(そうしないと、Hibernate / JPAが不快になります)。




    1. 非同期スレーブからMySQLGaleraクラスターを回復する方法

    2. PostgreSQLによって導入されたJSONBの説明

    3. PostgreSQLバックアップが適切かどうかはどうすればわかりますか?

    4. MariaDBの使用