【问题标题】:QueryDSL for Morphia doesn't use convertersMorphia 的 QueryDSL 不使用转换器
【发布时间】:2026-01-15 16:00:01
【问题描述】:

我尝试将 QueryDSL for Morphia 集成到我的项目中,但看起来 QueryDSL 忽略了转换器。

Morphia-only 查询有效:

    return createQuery().field("email").equal(email).get();

QueryDSL 版本抛出异常,因为它没有使用转换器:

    return query(user).where(user.email.eq(email)).fetchOne();

org.bson.codecs.configuration.CodecConfigurationException:找不到类 org.example.Email 的编解码器

转换器是通过注解配置的:

@Entity
@Converters(EmailConverter.class)
public class User implements Serializable {

这是我的 Maven 设置:

        <dependency>
            <groupId>org.mongodb.morphia</groupId>
            <artifactId>morphia</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
          <groupId>com.querydsl</groupId>
            <artifactId>querydsl-apt</artifactId>
            <version>4.1.3</version>
        </dependency>
        <dependency>
          <groupId>com.querydsl</groupId>
          <artifactId>querydsl-mongodb</artifactId>
          <version>4.1.3</version>
        </dependency>

...

      <plugin>
        <groupId>com.mysema.maven</groupId>
        <artifactId>apt-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>process</goal>
            </goals>
            <configuration>
              <outputDirectory>target/generated-sources/java</outputDirectory>
              <processor>com.querydsl.apt.morphia.MorphiaAnnotationProcessor</processor>
            </configuration>
          </execution>
        </executions>
      </plugin>

我是否缺少某些配置?或者转换器不能与 QueryDSL 一起使用?

【问题讨论】:

  • 我刚刚注意到 QueryDSL 仍在使用 3 岁的 Morphia 0.105。这可能会导致一些问题。

标签: mongodb querydsl morphia


【解决方案1】:

QueryDSL 还不支持 Morphia 转换器。我创建了一个pull request 来添加该功能。

【讨论】: