У меня есть репозиторий, который должен получать предложения:
@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);