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

时间:2017-12-12 11:09:54

标签: spring-data spring-data-mongodb querydsl

我使用Querydsl extensionQueryDslPredicateExecutor)到CrudRepository

要从测试覆盖率测量中可靠地排除生成的Q类,它们将生成到相应域类的专用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,据说可以让我插入我自己的域类 Q映射, .querydsl包后缀,但我还没有找到一种方法来配置Spring Data的MongoRepositoryFactory来选择我自己的EntityPathResolver

这可能吗?

1 个答案:

答案 0 :(得分:1)

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