Solrj getBeans() не может вписать ответ в bean-компонент

Для типа поля text_general метод getbeans(), возвращающий значение этого поля как ArrayList(), но полем в pojo является String(хотя использовалось индексирование того же pojo). Также у меня есть атрибут multiValued для false.

управляемые схемы:

<field name="description" type="text_general" indexed="true" stored="true"/>

Пойо-поле:

@Field("description")
private String description;
//getter-setter method

Java-код:

SolrClient client = new HttpSolrClient.Builder("http://localhost:8983/solr/audiovideo").build();
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter Serach : ");
    String search = sc.nextLine();
    SolrQuery query = new SolrQuery();
    query.setQuery("description:" + search);
    query.setStart(0);    
    QueryResponse response = client.query(query);             
    List<AudioVideoPojo> results = response.getBeans(AudioVideoPojo.class);

Исключение:

Exception in thread "main" org.apache.solr.client.solrj.beans.BindingException: Could not instantiate object of class com.mycompany.solrdemo1.AudioVideoPojo
at org.apache.solr.client.solrj.beans.DocumentObjectBinder.getBean(DocumentObjectBinder.java:71)
at org.apache.solr.client.solrj.beans.DocumentObjectBinder.getBeans(DocumentObjectBinder.java:50)
at org.apache.solr.client.solrj.response.QueryResponse.getBeans(QueryResponse.java:618)
at com.mycompany.solrdemo1.Main.getDataSolrFromDatabase(Main.java:155)
at com.mycompany.solrdemo1.Main.main(Main.java:131)
Caused by: org.apache.solr.client.solrj.beans.BindingException: Exception while setting value : [India International Music Festival] on private java.lang.String com.mycompany.solrdemo1.AudioVideoPojo.description
at org.apache.solr.client.solrj.beans.DocumentObjectBinder$DocField.set(DocumentObjectBinder.java:455)
at org.apache.solr.client.solrj.beans.DocumentObjectBinder$DocField.inject(DocumentObjectBinder.java:438)
at org.apache.solr.client.solrj.beans.DocumentObjectBinder.getBean(DocumentObjectBinder.java:67)

Caused by: java.lang.IllegalArgumentException: Can not set java.lang.String field com.mycompany.solrdemo1.AudioVideoPojo.description to java.util.ArrayList
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)
at java.lang.reflect.Field.set(Field.java:764)
at org.apache.solr.client.solrj.beans.DocumentObjectBinder$DocField.set(DocumentObjectBinder.java:449)

1 ответ

Решение

Задавать multiValued приписывать false, Согласно справочнику, по умолчанию false за fieldTypes, Но это не соблюдение по умолчанию.

Другие вопросы по тегам