我遇到了这个奇怪的问题。
在我的 dataconfig 文件中,我有一个根实体和 15 个其他子实体。如果我尝试进行完全导入,则会出现以下错误。
错误日志:
Caused by: org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: select fruitName from fruits where id = '2' Processing Document # 1
at org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:71)
at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:252)
at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:209)
at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:38)
at org.apache.solr.handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.java:59)
at org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:73)
at org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:243)
at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:472)
at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:498)
at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:411)
... 5 more
Caused by: java.lang.ClassNotFoundException: Unable to load null or org.apache.solr.handler.dataimport.null
at org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:899)
at org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:159)
at org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:127)
at org.apache.solr.handler.dataimport.JdbcDataSource.getConnection(JdbcDataSource.java:362)
at org.apache.solr.handler.dataimport.JdbcDataSource.access$200(JdbcDataSource.java:38)
at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:239)
... 13 more
Caused by: java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:768)
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:385)
at org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:889)
... 18 more
如果我在错误日志中对我的数据库执行查询,我没有发现任何错误。我尝试交换实体的顺序。每次在错误日志中,我都会找到最后一个实体的查询。
但是,如果我删除一个随机实体,则完全导入会成功。
这是由于对子实体/字段的数量施加了某种限制吗?为什么它试图加载类“null”?我错过了什么吗?
非常感谢任何帮助!
编辑:
我的 dataconfig.xml 的布局:
<dataconfig>
<document>
<entity name = "outer_entity" query="select id from outerTable">
<entity name = "subEntity1" query="select value1 from subEntity1">
</entity>
<entity name = "subEntity2" query="select value2 from subEntity2">
</entity>
..........
<entity name = "subEntity14" query="select value14 from subEntity14">
</entity>
<entity name = "subEntity15" query="select value15 from subEntity15">
</entity>
</entity>
</document>
</dataconfig>