Получение функции to_char (неизвестно, неизвестно) не является уникальным - PullRequest
0 голосов
/ 07 октября 2018

У меня есть репозиторий, который должен получать предложения:

@Query("SELECT offer FROM OfferEntity offer " +
        "   JOIN offer.placeOwnership AS owner " +
        "   JOIN owner.place AS place " +
        "WHERE " +
        "   place.id = :placeId AND " +
        "   to_char(offer.offerDate, 'yyyy-MM-dd') = to_char(:date, 'yyyy-MM-dd') ")
List<OfferEntity> getAllForDate(@Param("placeId") Long placeId, @Param("date") ZonedDateTime date);

Однако, это не работает, как я получаю:

Caused by: org.postgresql.util.PSQLException: ERROR: function to_char(unknown, unknown) is not unique
  Hint: Could not choose the best candidate function. You might need to add explicit type casts.
  Position: 649
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2477) ~[postgresql-42.1.4.jar:42.1.4]
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2190) ~[postgresql-42.1.4.jar:42.1.4]
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:300) ~[postgresql-42.1.4.jar:42.1.4]
    at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:428) ~[postgresql-42.1.4.jar:42.1.4]

Я не знаю, в чем проблемано это, очевидно, эта часть:

to_char(offer.offerDate, 'yyyy-MM-dd') = to_char(:date, 'yyyy-MM-dd')

Как я могу сделать эту работу?

Если я удаляю параметр date:

to_char(offer.offerDate, 'yyyy-MM-dd') = '2018-10-07'

он работаетно - очевидно, этому не хватает немного гибкости.

Также:

'2018-10-07' = to_char(:date, 'yyyy-MM-dd') 

работает.


Есть еще:

Это не такработая так с java.util.Date либо:

@Query("SELECT offer FROM OfferEntity offer " +
        "   JOIN offer.placeOwnership AS owner " +
        "   JOIN owner.place AS place " +
        "WHERE " +
        "   place.id = :placeId AND " +
        "   offer.offerDate = to_date(to_char(:date, 'yyyy-MM-dd')) ")
List<OfferEntity> getAllForDate(@Param("placeId") Long placeId, @Param("date") Date date);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...