Greetings! I am working on a requirement where I want to query the data and want to do the object mapping for the retrieved result using Solrj. For this, I am referring to the official document at *https://lucene.apache.org/solr/guide/7_6/using-solrj.html#java-object-binding <https://lucene.apache.org/solr/guide/7_6/using-solrj.html#java-object-binding>.* I set-up the necessary class files and the collections.
With the help of this document, I can create the documents in the Solr DB, but it is not working for fetching and mapping the fields to the Java POJO class. To do the mapping, I used @Field annotation. Details are as below: *1)* Solrj version: 7.6.0 *2)* The line of code which is not working: *List<Employee> employees = response.getBeans(Employee.class);* *3)* Exception stack trace: *Caused by: java.lang.IllegalArgumentException: Can not set java.lang.String field demo.apache.solr.vo.Employee.name <http://demo.apache.solr.vo.Employee.name> to java.util.ArrayList* * at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)* * at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)* * at sun.reflect.UnsafeObjectFieldAccessorImpl.set(Unknown Source)* * at java.lang.reflect.Field.set(Unknown Source)* *4)* Collection was created using *solr.cmd create -c employees -s 2 -rf 2* Please find the attached source code files. Also, I attached the stack trace file. Can you please help me on how to resolve them? Regards, Swapnil Katkar
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Exception in thread "main" org.apache.solr.client.solrj.beans.BindingException: Could not instantiate object of class demo.apache.solr.vo.Employee 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:628) at demo.apache.solr.SolrObjMapper.retrieveDocuments(SolrObjMapper.java:60) at demo.apache.solr.SolrObjMapper.main(SolrObjMapper.java:27) Caused by: org.apache.solr.client.solrj.beans.BindingException: Exception while setting value : [Sam Martin] on public java.lang.String demo.apache.solr.vo.Employee.name 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) ... 4 more Caused by: java.lang.IllegalArgumentException: Can not set java.lang.String field demo.apache.solr.vo.Employee.name to java.util.ArrayList at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source) at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source) at sun.reflect.UnsafeObjectFieldAccessorImpl.set(Unknown Source) at java.lang.reflect.Field.set(Unknown Source) at org.apache.solr.client.solrj.beans.DocumentObjectBinder$DocField.set(DocumentObjectBinder.java:449) ... 6 more