SpringDataを使用してMongoデータベースに永続化されるエンティティがあります。
@Document
public class MyEntity {
@Id
private String id;
@QueryType(PropertyType.DATETIME)
private DateTime lastUpdate;
}
これは私のリポジトリです:
public interface MyEntityRepository extends
MongoRepository<MyEntity, String>,
QueryDslPredicateExecutor<MyEntity> {}
そして、QueryDSL生成のための私のpom.xmlのプラグイン
<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?
もちろん、可能であれば、Java Dateにフォールバックしたり、日付をミリ秒として保存したりするのではなく、JodaTimeに固執したいと思います。