Solr Beans(无效的setter方法.必须有且只能有一个参数),没有任何原因



目前我在使用Solr 4.1和Lucene 4.1时遇到了以下问题:

我有一个这样的Solr-Bean:

import org.apache.solr.client.solrj.beans.Field;
public final class Bean {
    @Field
    private int someInt;
    @Field
    private String someString;
    //Fields like this are just being updated for easier use of the bean
    private List<Integer> someStringSplitIntoIntegers
        //setters, rest is the same:
        public void setSomeInt(int someInt) {
            this.someInt = someInt;
        }
        //getters straightforward...
}

现在我想通过HttpSolrServer.addBean(bean)将bean添加到Solr数据库,我得到以下异常:

Exception in thread "main" org.apache.solr.client.solrj.beans.BindingException: Invalid setter method. Must have one and only one parameter
    at org.apache.solr.client.solrj.beans.DocumentObjectBinder$DocField.storeType(DocumentObjectBinder.java:202)
    at org.apache.solr.client.solrj.beans.DocumentObjectBinder$DocField.<init>(DocumentObjectBinder.java:150)
    at org.apache.solr.client.solrj.beans.DocumentObjectBinder.collectInfo(DocumentObjectBinder.java:119)
    at org.apache.solr.client.solrj.beans.DocumentObjectBinder.getDocFields(DocumentObjectBinder.java:99)
    at org.apache.solr.client.solrj.beans.DocumentObjectBinder.toSolrInputDocument(DocumentObjectBinder.java:73)
    at org.apache.solr.client.solrj.SolrServer.addBean(SolrServer.java:136)
    at org.apache.solr.client.solrj.SolrServer.addBean(SolrServer.java:125)
    (...my call...)

但我不明白为什么。我为每个setter设置了多个参数,但这是可以的(它甚至是由Eclipse生成的)。

现在的问题是:

我错过了什么?这可能是什么原因呢?xml中缺少的条目是否会导致这些错误(我怀疑……)?

提前感谢。

马丁布劳恩

可以直接在setter方法上使用Field注释:

 @Field("cat")
   public void setCategory(String[] c){
       this.categories = c;
   }

确保在solr schema.xml中有一个名为someInt的int字段

欢呼

已经自己定了。

从注释中:

Ok。似乎是固定的。我在getter上也使用了@Field,这会导致错误。我已经尝试删除它,但又出现了另一个错误。所以我改回来了。此外,Solr bean不符合布尔isBoolean()方法(这导致了新的错误)。- Martin Braun刚刚编辑

相关内容

最新更新