#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
, не имея в виду? Но я не настроен оптимистично. Если нам удастся удалить репро, я обязательно его запишу.