Search code examples
mongodbquerydslmorphia

QueryDSL for Morphia doesn't use converters


I've tried to integrate QueryDSL for Morphia into my project, but it looks like QueryDSL ignores converters.

Morphia-only query works:

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

QueryDSL version throws an exception, because it's not using the converter:

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

org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class org.example.Email

The converters are configured via annotation:

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

This is my Maven setup:

        <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>

Am I missing some configuration? Or can't converters be used with QueryDSL?


Solution

  • QueryDSL doesn't support Morphia converters yet. I created a pull request to add that feature.