如何使用 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,据说可以让我插入自己的 域 class 到 Q
class 插入 .querydsl
包后缀的映射,但我还没有找到一种方法来配置 Spring 数据的 MongoRepositoryFactory
来选择我自己的 EntityPathResolver
.
这可能吗?
目前,唯一的方法是创建您自己的 MongoRepositoryFactory
变体,因为 EntityPathResolver
的实例是硬连接到它的。
我正在使用 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,据说可以让我插入自己的 域 class 到 Q
class 插入 .querydsl
包后缀的映射,但我还没有找到一种方法来配置 Spring 数据的 MongoRepositoryFactory
来选择我自己的 EntityPathResolver
.
这可能吗?
目前,唯一的方法是创建您自己的 MongoRepositoryFactory
变体,因为 EntityPathResolver
的实例是硬连接到它的。