2017-07-26 5 views
0

以下のコードスナップを参照して、カスタマイズメソッドでいくつかのバインディングを追加します。プログラムを再起動するときに、カスタマイズメソッドがロードされることがあるので、メソッドが正常に呼び出されることがありますが、ロードできないことがあり、結果が間違っています。私はAdminRepositoryを注入するリソースをデバッグしました。方法をカスタマイズするアンロードする場合、春のJdkDynamicTargetクラスはありませんメソッドをキャッシュしていますquerydslのデフォルトのカスタマイズメソッドがロードできない

public interface AdminRepository extends CrudRepository<MonthGprs, String>, 
    QueryDslPredicateExecutor<MonthGprs>, QuerydslBinderCustomizer<QMonthGprs> { 
Logger log = LoggerFactory.getLogger (AdminRepository.class); 
@Override 
default public void customize(QuerydslBindings bindings, QMonthGprs root) { 

    log.debug ("AdminRepository"); 

    bindings.bind (root.appLeftGprs).all (((path, value) -> { 
     Iterator it = value.iterator (); 
     return path.goe ((Float) it.next ()).and (path.loe ((Float) it.next ())); 
    })); 

    bindings.bind (root.wifiLeftGprs).all (((path, value) -> { 
     Iterator it = value.iterator (); 
     return path.between ((Float) it.next (), (Float) it.next ()); 
    })); 

    bindings.bind (root.simInfo.createdDate).all (((path, value) -> { 
     Iterator it = value.iterator (); 
     return path.after ((ZonedDateTime) it.next ()).and (path.before ((ZonedDateTime) it 
       .next ())); 
    })); 

    bindings.bind (String.class) 
      .first ((StringPath path, String value) -> path.containsIgnoreCase (value)); 
} 

} ところで、私はcom.querydsl使用:querydsl-MongoDBの:jarファイル:4.1.4、org.springframework.boot:春ブートを-devtools:jar:1.4.1.RELEASE、 org.springframework:スプリングコンテキストサポート:jar:4.3.3.RELEASE。

答えて

0

Iしかし

org.springframework.data.repository.support.Repositories 

private final Map<Class<?>, String> repositoryBeanNames;

このマップでは、私は1つのドメインモデルの2つのリポジトリに定義された理由を発見したキー、リポジトリとしてクラスを使用したキーと値のペアを保持します値としての名前アプリケーションコンテキストに同じドメインモデル用の複数のリポジトリがある場合、リポジトリクラスは1つだけロードされます。したがって、クエリdslリポジトリがロードされると、customizeメソッドが呼び出されるか、または他のリポジトリがロードされます。

関連する問題