2014-11-04 62 views
10

我目前正在使用Spring的数据mongodb 1.6.0-RELEASE,我知道它有审计功能。 I 将@EnableMongoAuditing注释放在我的配置类之上。而我的豆低于:春天的数据mongodb审计不工作..(Java配置)

@Document 
public class MyBean{ 

@Id 
private AnotherCustomBean anotherCustomBean = new AnotherCustomBean(); 

@CreatedDate 
private Date creationDate; 

@LastModifiedDate 
private Date lastModifiedDate; 

. 
. 
. 

当我保存这个bean与mongoTemplate.save(myBean);它不是设置创建日期和最后修改日期...而且它有没有错误。

任何帮助,将不胜感激,

谢谢。

+0

我想你应该把这个属性加入到你的bean中,这样我们就需要告诉** Spring **谁是当前的保存属性。@FengBy private String createdBy;另一个想法是,注释可以选择性地应用,具体取决于您想要捕获哪些信息。捕获时间点的注释可用于JodaTimes DateTime类型的属性,旧Java日期和日历,JDK8日期/时间类型以及long/Long – 2014-11-04 12:02:58

+0

实际上@CreatedBy注释不是强制的,也是joda-time classpath已经如此,应该没问题。 – 2014-11-04 12:48:56

回答

5

的实际问题是@Id注解。要正确使用弹簧审计,你一定要定义的ObjectId(空新保存的对象),这就是春天如何决定@LastModifiedDate@CreatedDate

之后,我找到了一种方法,以使其能够使用自定义bean上@Id通过实施Auditable<String,String>

感谢@Felby:

我发现需要@Id字段为空的保存() 的只为@CreatedDate和@CreatedBy标注的时间。 @LastModifiedDate和@LastModifiedBy字段不管 是否工作@Id字段是否被初始化。

+3

我发现只有'@ CreatedDate'和'@ CreatedBy'注释时'@ Id'字段在'save()'时需要为'null'。 @ @ LastModifiedDate'和'@ LastModifiedBy'字段无论“@ Id”字段是否被初始化都有效。 – Felby 2015-10-28 20:21:03

0

我不知道到底,但尝试添加乔达时间类路径的使用日期有关的审计注释

<dependency> 
    <groupId>joda-time</groupId> 
    <artifactId>joda-time</artifactId> 
    <version>2.2</version> 
</dependency>