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

Reply via email to