Spring Entity LocalDate неверное значение в БД - PullRequest
0 голосов
/ 21 марта 2020

У меня есть объект Spring с полем LocalDate, которое неправильно сохраняется в базе данных (я установил его на 2020-03-21, а в базе данных - 2020-03-20)

Я включил журналирование трассировки Spring jpa / hibernate и увидел, что в выводе «журнала параметров привязки» записано правильное значение. Я даже отлаживал через logi c в BasicBinder, и даже когда он был преобразован в необработанный байт-код, я мог видеть с новой строкой (val) в консоли отладки, что это все еще 2020-03-21. Я также проверил во всех моих выходах журнала, что нигде нет другого оператора вставки / обновления, который перезаписывает это значение.

Это необработанный вывод журнала:

 insert 
    into
        user
        (delete_at, email_confirmed, password_hash, username, id) 
    values
        (?, ?, ?, ?, ?)
2020-03-21 11:23:59.813 TRACE 19772 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [DATE] - [2020-03-21]

Нет оператора, который обращается к пользовательская таблица в любом случае между этими двумя выходами журнала, но, как вы можете видеть, хотя правильное значение '2020-03-21' было параметром привязки для вставки, в выборе выберите неправильное значение читается (я проверил в база данных и там значение '2020-03-20', так что оператор выбора правильный, но вставка явно не связывает правильный параметр)

    select
        user0_.id as id1_3_0_,
        user0_.delete_at as delete_a2_3_0_,
        user0_.email_confirmed as email_co3_3_0_,
        user0_.password_hash as password4_3_0_,
        user0_.username as username5_3_0_ 
    from
        user user0_ 
    where
        user0_.id=?
2020-03-21 11:24:00.215 TRACE 19772 --- [nio-8080-exec-2] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [VARCHAR] - [97cfe77b-34d4-488a-a724-8ffb279862df]
2020-03-21 11:24:00.216 TRACE 19772 --- [nio-8080-exec-2] o.h.type.descriptor.sql.BasicExtractor   : extracted value ([delete_a2_3_0_] : [DATE]) - [2020-03-20]

Я только добавил это поле только сейчас и это единственный раз, когда к нему обращаются во всем коде. Может кто-нибудь объяснить мне, как правильное значение может быть связано в BasicBinder, но все же неправильное значение записывается в базу данных?

Это в локальной среде, так что никаких других служб и т. Д. c. модифицируют базу данных. Когда я выполняю команду INSERT локально непосредственно в базе данных, записывается правильное значение.

...