我有一个实体,将使用 Spring Data 持久保存到 Mongo 数据库:
@Document
public class MyEntity {
@Id
private String id;
@QueryType(PropertyType.DATETIME)
private DateTime lastUpdate;
}
这是我的存储库:
public interface MyEntityRepository extends
MongoRepository<MyEntity, String>,
QueryDslPredicateExecutor<MyEntity> {}
以及我的 pom.xml 中用于生成 QueryDSL 的插件
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.0.8</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources</outputDirectory>
<processor>org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
尽管如此,它还是将 DateTime 视为常规实体(我尝试过使用或不使用 QueryType)。我希望将其视为日期,这样我就可以进行比较,但现在我不能:
Predicate predicate = QMyEntity.myentity.lastUpdate... // where are the lessThan or greaterThan methods?
当然,如果可能的话,我想坚持使用 JodaTime,而不是退回到 Java Date,或将日期存储为毫秒。
最佳答案
如果您使用的是最新版本的 Spring Data MongoDB(在撰写本文时为 1.2.0.RELEASE),则应注册 JodaTime 类型所需的 Converter
实现(如果您拥有该库)类路径(请参阅 according ticket )。
如果您必须使用旧版本,则需要手动编写并注册这些转换器,如 reference documentation 中所述。 .
关于java - 在带有 Spring Data 的 Mongo 实体中使用 jodatime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15414765/