2017-07-26 33 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方法或加载其他存储库。

相关问题