У меня есть простой метод в репозитории моего приложения Java:
Код: Выделить всё
@Modifying
@Query(value = "INSERT INTO auction_proposal_list_link (auction_proposal_id, auction_list_id, mini_session_start_time, " +
"mini_session_end_time, additional_session_end_ts, mini_session_start_time_fixed, mini_session_number) " +
"VALUES (:auctionProposalId, :auctionListId, :sessionStartTime, :sessionEndTime, " +
"CASE WHEN :additionalSessionEndTime IS NOT NULL THEN CAST(:additionalSessionEndTime AS time) ELSE CAST(NULL AS time) END, " +
":startTimeFixed, :miniSessionNumber)",
nativeQuery = true)
void insertAuctionBySeries(
@Param("auctionProposalId") Long auctionProposalId,
@Param("auctionListId") Long auctionListId,
@Param("sessionStartTime") LocalTime sessionStartTime,
@Param("sessionEndTime") LocalTime sessionEndTime,
@Param("additionalSessionEndTime") LocalTime additionalSessionEndTime,
@Param("startTimeFixed") Boolean startTimeFixed,
@Param("miniSessionNumber") Long miniSessionNumber
);
InvalidDataAccessResourceUsageException: не удалось выполнить оператор; SQL [н/д]; вложенным исключением является org.hibernate.Exception.SQLGrammarException: невозможно выполнить оператор, вызванный: SQLGrammarException: невозможно выполнить оператор, вызванный: PSQLException: ОШИБКА: невозможно привести тип bytea ко времени без часового пояса
И эта ошибка произошла из-за того, что я попытался вставить в extra_session_end_ts NULL.
Я пробовал разные подходы, подобные приведенным выше, COALESCE(CAST(:additionalSessionEndTime AS time), NULL::time), просто вставьте ноль, и у меня ничего не работает.
Я просто хочу иметь простую логику - вставить какое-то значение в столбец extra_session_end_ts или вставить NULL, если значение равно null.
Как это сделать?
Подробнее здесь: https://stackoverflow.com/questions/793 ... -time-zone