0

我已经在 playORM 中映射了实体,并且我的项目运行良好,我的实体按照它们的方式映射。但是,在安装了 maven 中发布的最新版本 playORM 1.4.1 后,我得到了下面的空指针。

我想找到错误,但不知道从哪里开始寻找。

有什么提示吗?

信息:在本地找到元 = 用户 2012-11-09 17:32:22,918 com.alvazan.orm.layer9z.spi.db.cassandra.ColumnFamilyHelper waitForNodesToBeUpToDate 信息:循环直到所有节点具有相同的模式版本或超时 300000 毫秒 2012- 11-09 17:32:22,939 com.alvazan.orm.layer9z.spi.db.cassandra.ColumnFamilyHelper tryToLoadColumnFamilyImpl 信息:好吧,我们没有找到任何列族=要在 cassandra 中加载的用户(来自 virt=User)2012-11 -09 17:32:22,939 com.alvazan.orm.layer9z.spi.db.cassandra.ColumnFamilyHelper tryToLoadColumnFamilyVirt 信息:从 cassandra = 21 java.lang.NullPointerException 在 com.alvazan.orm.impl 加载列族元数据的总时间。 meta.data.MetaEmbeddedSimple.translateToColumnImpl(MetaEmbeddedSimple.java:105) 在 com.alvazan.orm.impl.meta.data.MetaEmbeddedSimple.translateToColumn(MetaEmbeddedSimple.java:93) 在 com.alvazan.orm。impl.meta.data.MetaClassSingle.translateToRow(MetaClassSingle.java:82) 在 com.alvazan.orm.layer0.base.BaseEntityManagerImpl.putImpl(BaseEntityManagerImpl.java:102) 在 com.alvazan.orm.layer0.base.BaseEntityManagerImpl。将(BaseEntityManagerImpl.java:68) 放在 com.s1mbi0se.dmp.da.dao.UserDao.insertOrUpdateUser(UserDao.java:23) 放在 com.s1mbi0se.dmp.module.UserModule.persistData(UserModule.java:116) 放在 com .s1mbi0se.dmp.processor.mapred.SelectorReducer.reduce(SelectorReducer.java:60) 在 com.s1mbi0se.dmp.processor.mapred.SelectorReducer.reduce(SelectorReducer.java:1) 在 org.apache.hadoop.mapreduce.Reducer .run(Reducer.java:176) at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) at org. apache.hadoop.mapred.LocalJobRunner$Job。run(LocalJobRunner.java:260) 17:32:22,946 WARN Thread-3 mapred.LocalJobRunner:298 - job_local_0001 java.lang.InterruptedException at com.s1mbi0se.dmp.processor.mapred.SelectorReducer.reduce(SelectorReducer.java:63)在 com.s1mbi0se.dmp.processor.mapred.SelectorReducer.reduce(SelectorReducer.java:1) 在 org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:176) 在 org.apache.hadoop.mapred.ReduceTask .runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:260) 2012 -11-09 17:32:27,237 com.s1mbi0se.dmp.processor.main.DmpProcessorRunner 运行reduce(SelectorReducer.java:63) at com.s1mbi0se.dmp.processor.mapred.SelectorReducer.reduce(SelectorReducer.java:1) at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:176) at org .apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.LocalJobRunner$Job.run (LocalJobRunner.java:260) 2012-11-09 17:32:27,237 com.s1mbi0se.dmp.processor.main.DmpProcessorRunner 运行reduce(SelectorReducer.java:63) at com.s1mbi0se.dmp.processor.mapred.SelectorReducer.reduce(SelectorReducer.java:1) at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:176) at org .apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:649) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:417) 在 org.apache.hadoop.mapred.LocalJobRunner$Job.run (LocalJobRunner.java:260) 2012-11-09 17:32:27,237 com.s1mbi0se.dmp.processor.main.DmpProcessorRunner 运行LocalJobRunner$Job.run(LocalJobRunner.java:260) 2012-11-09 17:32:27,237 com.s1mbi0se.dmp.processor.main.DmpProcessorRunner 运行LocalJobRunner$Job.run(LocalJobRunner.java:260) 2012-11-09 17:32:27,237 com.s1mbi0se.dmp.processor.main.DmpProcessorRunner 运行

4

2 回答 2

2

编辑:这是在 master 分支中修复的,很快就会发布。2012 年 11 月 27 日

日志格式似乎有点不对劲,但这是重要的部分

java.lang.NullPointerException at com.alvazan.orm.impl.meta.data.MetaEmbeddedSimple.translateToColumnImpl(MetaEmbeddedSimple.java:105)

第 105 行找到此代码...

    for(T val : toBeAdded) {
        byte[] name = formTheName(val);
        Column c = new Column();
        c.setName(name);

        row.getColumns().add(c);
    }

特别是第 105 行是第一行,所以 toBeAdded 出于某种原因为空......看看谁调用了这个方法。

嗯,事实证明你的一个实体有一个空列表。我们需要在此处添加代码,因此如果您的实体有一个空列表,我们将创建一个空列表。你能提交一张票并链接到这个网址吗?我们可以很容易地解决这个问题。

注意:我习惯于每个实体都有这样的字段

私人列出一些东西;

我100%总是这样定义它

私有列表的东西 = 新的 ArrayList();

这避免了到处都是空指针,这就是为什么我错过了这个:( :(.....无论如何,我们将修复以允许这个空列表。

谢谢,院长

于 2012-11-10T02:59:40.867 回答
1

这在 Maven 存储库中可用的 1.4.2 版中已修复

于 2012-11-29T12:54:02.250 回答