我在playORM中映射了实体,我的项目运行正常,我的实体按照它们的方式映射。但是,在安装了maven发布的最新版本的playORM 1.4.1之后,我得到了空指针。
我想找到错误,但不知道从哪里开始寻找。
任何提示?
信息:找到meta =本地用户 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的LOAD列族元的总时间 显示java.lang.NullPointerException at com.alvazan.orm.impl.meta.data.MetaEmbeddedSimple.translateToColumnImpl(MetaEmbeddedSimple.java:105) at com.alvazan.orm.impl.meta.data.MetaEmbeddedSimple.translateToColumn(MetaEmbeddedSimple.java:93) 在com.alvazan.orm.impl.meta.data.MetaClassSingle.translateToRow(MetaClassSingle.java:82) at com.alvazan.orm.layer0.base.BaseEntityManagerImpl.putImpl(BaseEntityManagerImpl.java:102) 在com.alvazan.orm.layer0.base.BaseEntityManagerImpl.put(BaseEntityManagerImpl.java:68) 在com.s1mbi0se.dmp.da.dao.UserDao.insertOrUpdateUser(UserDao.java:23) at com.s1mbi0se.dmp.module.UserModule.persistData(UserModule.java:116) at com.s1mbi0se.dmp.processor.mapred.SelectorReducer.reduce(SelectorReducer.java:60) at 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) 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) at 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 run
答案 0 :(得分:2)
编辑:这在主分支中已修复,很快就会被释放。 12年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由于某种原因是空的....看看谁调用了这个方法。
嗯,事实证明你的一个实体有一个空列表。我们需要在这里添加代码,所以如果你的实体有一个空列表,我们就会创建一个空列表。您可以提交票证并链接到此URL。我们可以轻松解决这个问题。注意:我习惯每个实体都有这样的字段
私人列表;
我100%总是像这样定义
private List something = new ArrayList();
这避免了Nullpointers遍布这个地方,这就是为什么我错过了这个:( :(不管怎样,我们将修复允许这个空列表。
感谢, 迪安
答案 1 :(得分:1)
这已在版本1.4.2中修复,该版本可在Maven repo中找到