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
, Но это не соблюдение по умолчанию.