Hibernate - автоматические created_date и updated_date из базы данных

Нам нужно добавить две колонки в каждую таблицу — created_date и updated_date. Тип базы данных может быть любым из следующих: Oracle, MySQL, PostgreSQL, CouchDB.

Два столбца должны хранить дату, а также время. created_date следует заполнять только при создании строки. updated_date должен заполняться каждый раз при обновлении строки (также во время создания).

Решение предназначено для облака, в котором будет работать много JVM Hibernate. Поскольку единой JVM не существует, они могут время от времени рассинхронизироваться. Поэтому мы НЕ хотим, чтобы решение заполняло время JVM в этих двух столбцах.

Есть ли независимый от БД способ сделать это в Hibernate? Мы хотели бы возложить ответственность за создание/обновление даты на саму БД. Триггеры были бы последним вариантом, который мы хотели бы попробовать, так как их создание для каждой таблицы было бы громоздким.

Идеальным решением было бы иметь какую-то аннотацию в JPA/Hibernate, которая заставит инструмент ORM создавать или обновлять дату из БД во время вставки/обновления.


person user2250246    schedule 26.09.2013    source источник
comment
Я попытался использовать следующий SQL (для Oracle): ‹pre› создать таблицу tmptmp (номер идентификатора (10), ct TIMESTAMP DEFAULT CURRENT_TIMESTAMP, ut TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE TIMESTAMP); ‹/pre› Но это дает мне ошибку: Ошибка в командной строке: 5 Столбец: 42 Отчет об ошибке: Ошибка SQL: ORA-00907: отсутствует правая скобка 00907. 00000 - отсутствует правая скобка * Причина: * Действие:   -  person user2250246    schedule 28.09.2013


Ответы (1)


Решение найдено, и оно очень хорошо объяснено здесь: Пользовательский SQL для столбцов — PrismoSkills

Это решение не зависит от БД и подходит для Hibernate.

person user2250246    schedule 15.04.2014