Отсутствует компонент времени в DateCreated для объектов одного конкретного класса домена

#hibernate #grails #grails-orm

#спящий режим #grails #grails-orm

Вопрос:

В нашем приложении Grails у нас есть определенный класс домена, автоматически сгенерированное dateCreated значение которого иногда неверно. Сохраненная дата-время в базе данных содержит год, месяц и дату, но отсутствует час, минута и секунда. Класс домена определяется следующим образом:

 class Monster {
    // ...various other fields, but no hibernate hooks, or anything clever like that
    Date dateCreated
    Date lastUpdated
}
 

Он поддерживается таблицей в базе данных MySQL, в столбце date_created с типом datetime . Столбец не равен нулю, но не имеет других ограничений, триггеров или тому подобного.

Примерно каждый шестой монстр затронут, и мы еще не обнаружили закономерности. Мы никогда не устанавливаем dateCreated явно, никогда нигде в коде нашего приложения. lastUpdated on Monster всегда завершен и dateCreated работает нормально для всех объектов нашего домена, кроме Monster.

Эти симптомы кому-нибудь что-нибудь говорят? Мы начали с предположения, что мы сами писали в него каким-то глупым способом, но мы искали несколько дней и пока не нашли ничего даже смутно наводящего на размышления.

Комментарии:

1. Это почти невозможно, но, по-видимому, это происходит. Вы проверяете значение, просматривая напрямую базу данных или просто основываясь на том, что вы видите в приложении Grails?

2. @JeffScottBrown Увы, мы видим эти неверные значения как в базе данных, так и в наших восстановленных объектах.

3. Есть ли у вас где-нибудь в вашем приложении код, который присваивает значение DateCreated?

4. Действительно, странно. Если вы можете найти способ сделать это, пожалуйста, отправьте JIRA, и мы исправим это. Я впервые об этом слышу.

5. @JeffScottBrown мы не устанавливаем DateCreated непосредственно нигде в приложении, ни на каком объекте домена. Теперь мы рассматриваем косвенные обращения — возможно, где-то мы пишем monster."$it" = a-date-without-a-time-component , не имея в виду? Но я не настроен оптимистично. Если нам удастся удалить репро, я обязательно его запишу.