2013-03-16 12 views
1

Я играю с пружинными данными и mongodb. То, что я пытаюсь достичь, - это автоматическое создание setOn и updatedOn, когда я создаю и/или обновляю объект. Поэтому я в основном создал «BaseDocument», который содержит createdOn и updatedOn атрибуты даты и создал AbstractMongoDbListener, чтобы я мог перехватить документ перед сохранением (onBeforeSave), а затем установить эти даты. Проблема в том, что если я не добавлю эти даты к конструктору класса, который расширяет BaseDocument, эти даты не будут сохраняться в базе данных. Подкласс должен создать CreateOn и updatedOn на своем конструкторе, чтобы получить эти функции, и это вовлекает идею автоматизации создания этих дат. Что было бы хорошей стратегией для реализации этого?Настройка createdOn и UpdateOn автоматически

Заранее благодарен!

+0

Имеет ли класс BaseDocument соответствующий набор и сеттеры? –

ответ

8

Аудиторская поддержка была реализована в Spring Data MongoDB 1.2.0. Для использования вам нужно иметь joda-time в вашем пути к классам и установить тип созданных и измененных дат в DateTime. Все необходимые шаги

  • Добавить Maven зависимость
<dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>2.2</version> 
    </dependency> 
  • Добавить поддержку аудита в конфигурации Spring
<mongo:auditing /> 
  • свойства Аннотирование в классах, как:
@CreatedDate 
    private DateTime created; 

    @LastModifiedDate 
    private DateTime modified; 

Что-то иметь в виду: Дата создания файла устанавливается только при сохранении документа без набора _id поля.

+0

вот что я искал! thanks – Lemmerich

+0

Как добавить поддержку аудита программным образом с помощью классов Java @Configuration? – Erik

+3

@ Erik yes, используйте '@ EnableMongoAuditing' в классе' @ Configuration': http://docs.spring.io/spring-data/mongodb/docs/1.4.x/reference/html/mongo.core.html –

0

Хорошо, он работает, используя onBeforeConvert вместо onBeforeSave. Я устанавливал исходный объект, а не DBObject. Установка его перед конвертированием делает трюк.

Смежные вопросы