2017-07-26 35 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:spring-context-support:jar:4.3.3.RELEASE。

回答

0

我發現我定義兩個儲存用於一個域模型的原因,然而,在

org.springframework.data.repository.support.Repositories 

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

此地圖保持一個鍵 - 值對,其中使用類作爲鍵,儲存庫名稱作爲價值。如果應用程序上下文對同一個域模型有多個存儲庫,則只加載一個存儲庫類。因此,如果加載查詢dsl存儲庫,則會調用customize方法或加載其他存儲庫。

相關問題