【发布时间】: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。这可能会导致一些问题。