java - 在带有 Spring Data 的 Mongo 实体中使用 jodatime

标签 java jodatime querydsl spring-data-mongodb

我有一个实体,将使用 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/

相关文章:

java - 是否可以以某种方式扩展标记为最终的 Joda-Time 类?

android - 获取特定日期和时间的 3 个字母的时区缩写

java - 使用 querydsl 模拟数据库查询 - 可选问题

java - 如何使用 BigQuery 连接器从 java Spark 读取 BigQuery 表

java - 如何给已经构建好的OkHttp请求对象添加header?

java - Java 字符串格式化

java - 验证日期+时间选择器

java - Java中的Spawn过程,类似于双击

java - QueryDSL 内连接 : path expected for join

java - 使用 EclipseLink 和 Querydsl 的自定义数据类型