我正在尝试使用注释启用审核。我的域类具有在构造对象时填充的 @Id 字段。我为 lastModified 添加了一个 java.util.Date 字段,并用 @LastModifiedDate 对其进行了注释。
@Document
public class Book {
@Id
private String name;
private String isbn;
@LastModifiedDate
private Date lastModified;
public Book(String name) {
this.name = name;
}
}
我已使用
<mongo:auditing/>.
在 Spring 配置 XML 中启用审核当我尝试保存对象的实例时,出现以下错误:
Book book1 = new Book("ABCD");
mongoOps.save(book1);
java.lang.IllegalArgumentException:不支持的实体 com.pankaj.Book!无法确定 IsNewStrategy。
我不想使用 Auditable 接口(interface),也不想从 AbstractAuditable 扩展我的域类。我只想使用注释。
因为我对@CreatedBy 和@LastModifiedBy 不感兴趣,所以我也没有实现 AuditAware 接口(interface)。
我只希望 @LastModifiedDate 为我的域类工作。我错过了什么?
我正在使用 SpringData MongoDB 1.7.0 版。
最佳答案
您没有提及如何配置 MongoDB 连接,但如果您使用 AbstractMongoConfiguration,它将使用实际配置类的包在启动时查找 @Document 注释类。
如果您的实体位于不同的包中,则必须通过覆盖 AbstractMongoConfiguration.getMappingBasePackage() 手动处理该包。把它放在你的 Mongo Configuration 类中应该可以解决问题(同样,这是考虑到你正在为你的 Mongo 配置扩展 AbstractMongoConfiguration ):
@Override
protected String getMappingBasePackage() {
return "package.with.my.domain.classes";
}
关于spring-data - Spring Data MongoDB 在审计期间无法确定其新策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31422672/