0

我遇到了这个奇怪的问题。

在我的 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>
4

1 回答 1

0

我没有遇到子实体的限制。但是,在您的情况下,它看起来很明显,因为如果您删除 1 个实体,它就可以工作。

我建议您以某种方式加入查询或使用视图。

于 2013-06-19T11:46:38.513 回答