2016-07-19 17 views
0

@EnableMongoRepositoriesが指定されたSpring/MongoDB @Queryアノテーションを使用していますが、Stringパラメータの置換によって解析/数値書式の例外が発生します。私はデバッグの目的で文字列の日付をハードコードするときに動作します。私は依存関係や何かこれを働かせるために欠けていますか?ここでは、関連するセクションです:Spring MongoDB @Queryパラメータ?0は置換されていません

これは動作します:

@Query("{'MyData.fromDatestamp' : { $gte: { $numberLong: \"20130801000000\" } }}") 
List<MyData> findMyData(); 

これはしていません:

@Query("{'MyData.fromDatestamp' : { $gte: { $numberLong: ?0 } }}") 
List<MyData> findMyData(String fromDatestamp); 

エラー:ここ

java.lang.NumberFormatException: For input string: "_param_0" 

は私の依存関係です:

dependencies { 
    classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.5.RELEASE") 
} 

...

compile("org.springframework.boot:spring-boot-starter-web") { 
    exclude module: "spring-boot-starter-tomcat" 
} 
compile("org.springframework.boot:spring-boot-starter-jetty") 
compile("org.springframework.data:spring-data-mongodb") 
compile("org.mongodb:mongo-java-driver:3.2.2") 
compile("com.fasterxml.jackson.core:jackson-core:2.8.0") 
compile("com.fasterxml.jackson.core:jackson-annotations:2.8.0") 

そして、ここでは私の設定です:

また
@Configuration public class MongoConfig extends AbstractMongoConfiguration { 
@Override 
protected String getDatabaseName() { 
    return databaseName; 
} 

@Bean 
public MongoClient mongoClient() throws Exception { 
    return new MongoClient(dataStoreHost,dataStorePort); 
} 

@Override 
public Mongo mongo() throws Exception { 
    return mongoClient(); 
} 

@Bean 
public MongoDbFactory mongoDbFactory() throws Exception { 
    return new SimpleMongoDbFactory(mongoClient(), databaseName); 
} 

@Override 
@Bean 
public MongoTemplate mongoTemplate() throws Exception { 
    return new MongoTemplate(mongoDbFactory()); 
} 

@Bean 
public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() { 
    return new PropertySourcesPlaceholderConfigurer(); 
} 

}

、私はJSONParseExceptionで失敗これらのバリエーションを試してみました:

@Query("{'MyData..fromDatestamp' : { $gte: { $numberLong: \"?0\" } }}") 

@Query("{'MyData..fromDatestamp' : { $gte: { $numberLong: '?0' } }}") 

どのような洞察や考えにも感謝の意を表します。

答えて

0

タイプを長く変更しました。以前のテストではStringからLongに変更しようとしましたが、必要でないときにクエリのjsonで$ numberLongを指定した可能性があります。私の日付フィールドのMongoコンソールでNumberLongを表示していますが、これは最終的にクエリのために働いていました。 @Repository注釈をインターフェイスの上部に追加したことに注目してください:

@Query(value = "{MyData.fromDatestamp : { $gte: ?0 } }") 
List<MyData> findMyData(long fromDatestamp); 
関連する問題