如何使用 Spring Data MongoRepositoryFactory 注册自定义 Querydsl EntityPathResolver?

How to register custom Querydsl EntityPathResolver with Spring Data MongoRepositoryFactory?

我正在使用 Querydsl extension (QueryDslPredicateExecutor) 到我的 CrudRepository

为了从我的测试覆盖率测量中可靠地排除生成的 Q classes,它们被生成到相应域 classes 的专用 querydsl 子包中(注释处理器选项 -Aquerydsl.packageSuffix=.querydsl).

唉,这会在应用程序启动时导致 ClassNotFoundException

java.lang.IllegalArgumentException: Did not find a query class org.example.QDomain for domain class org.example.Domain!
        at org.springframework.data.querydsl.SimpleEntityPathResolver.createPath(SimpleEntityPathResolver.java:63)
        at org.springframework.data.mongodb.repository.support.QueryDslMongoRepository.<init>(QueryDslMongoRepository.java:85)
        at org.springframework.data.mongodb.repository.support.QueryDslMongoRepository.<init>(QueryDslMongoRepository.java:67)
    …
Caused by: java.lang.ClassNotFoundException: org.example.QDomain
    …

我已经找到了 EntityPathResolver interface,据说可以让我插入自己的 域 classQ class 插入 .querydsl 包后缀的映射,但我还没有找到一种方法来配置 Spring 数据的 MongoRepositoryFactory 来选择我自己的 EntityPathResolver.

这可能吗?

目前,唯一的方法是创建您自己的 MongoRepositoryFactory 变体,因为 EntityPathResolver 的实例是硬连接到它的。