2017-12-12 13 views
0

CrudRepositoryQuerydsl extensionQueryDslPredicateExecutor)を使用しています。カスタムQuerydsl EntityPathResolverをSpringデータMongoRepositoryFactoryに登録するには?

テストのカバレッジ測定値から生成されたクラスを確実に除外するには、それぞれのドメインクラスのサブパッケージ(注釈プロセッサオプション-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 
    … 

私はすでにたぶん私は私自身のドメインクラスに挿入Qにクラスのマッピングをプラグインすることが可能になるEntityPathResolver interfaceに位置しています.querydslパッケージの接尾辞ですが、私はSpringデータのMongoRepositoryFactoryを構成して自分自身を選択する方法を見つけられませんでしたEntityPathResolver

これは可能ですか?

答えて

1

現在、唯一の方法はMongoRepositoryFactoryの独自のバリアントを作成することです。これはEntityPathResolverのインスタンスがハードワイヤードされているためです。

+0

私は{MongoRepositoryFactory.getTargetRepository}}を無効にしようとしましたが、{{getEntityInformation}}はプライベートなので{{getTargetRepository}}のコピーから再利用できません。特に{{CustomEntityPathResolver}}は拡張不可能な{{SimpleEntityPathResolver}}とほとんど同じですので、私の好みに合わせてコピーして貼り付けを行うのは大変です。 –

関連する問題