PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Spring Data Rest:Датата е нулева заявка хвърля postgres изключение

Прекарах известно време в разглеждане на това, защото наистина искам да сравня "date is null" в заявките и това е резултатът:

Когато използвате „cast(foo.date as date) е null ", работи добре, ако полето не е null. Ако полето е null, това изключение се хвърля:

org.postgresql.util.PSQLException: ERROR: cannot cast type bytea to date

Решението е да използвате coalesce:

coalesce(:date, null) is null

Работи добре с или без данни в полеви тестове.

Моят пример за заявка:

@Query("SELECT c "
        + " FROM Entity c "
        + " WHERE "
        + "       and ( (coalesce(:dateFrom, null) is null and coalesce(:dateUntil, null) is null) "
        + "             or ((coalesce(c.date, null) is not null) "
        + "                 and ( "
        + "                        ((coalesce(:dateFrom, null) is null and coalesce(:dateUntil, null) is not null) and c.date <= :dateUntil) "
        + "                     or ((coalesce(:dateUntil, null) is null and coalesce(:dateFrom, null) is not null) and c.date >= :dateFrom)"
        + "                     or (c.date between :dateFrom and :dateUntil)"
        + "                 )"
        + "             )"
        + "       ) "

Надяваме се, че работи за вас!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Heroku:импортирането от S3 е неуспешно

  2. Как да изберете двоични данни от колона postgres

  3. Задаване на персонализирана опция в съхранена процедура

  4. plv8 деактивира функцията за изпълнение и подготовка в eval()

  5. Инсталирайте PostgreSQL на Ubuntu 20.04