2016-11-03 2 views
0

ich zur Zeit immer diese Fehlermeldung, wenn ich Elemente zu einem IndexedCollection hinzufügen:cqengine IndexedCollection hinzufügen Nullpointer verursacht

HIGHEST: null 
java.lang.NullPointerException 
    at java.util.concurrent.ConcurrentSkipListMap.doGet(ConcurrentSkipListMap.java:778) 
    at java.util.concurrent.ConcurrentSkipListMap.get(ConcurrentSkipListMap.java:1546) 
    at com.googlecode.cqengine.index.support.AbstractMapBasedAttributeIndex.addAll(AbstractMapBasedAttributeIndex.java:81) 
    at com.googlecode.cqengine.engine.CollectionQueryEngine$12.perform(CollectionQueryEngine.java:1125) 
    at com.googlecode.cqengine.engine.CollectionQueryEngine.forEachIndexDo(CollectionQueryEngine.java:1206) 
    at com.googlecode.cqengine.engine.CollectionQueryEngine.addAll(CollectionQueryEngine.java:1122) 
    at com.googlecode.cqengine.ConcurrentIndexedCollection.add(ConcurrentIndexedCollection.java:351) 

ich zu debuggen versucht habe, um zu sehen, ob ich einen Nullwert bin vorbei, aber ich bin nicht. Das Objekt, das ich hinzufügen möchte, hat eine Null DateTime, aber der entsprechende Index gibt bereits null zurück, wenn er null ist.

Ich denke, die Lösung für dieses Problem kommt letztendlich auf Erfahrung, @npgall haben Sie jemals dieses Problem angetroffen und wenn ja, wie haben Sie es gelöst?

Antwort

1

Ich denke, die Dokumentation auf der Website in diesem Bereich fehlte. Es erwähnt SimpleNullableAttribute und MultiValueNullableAttribute, aber nicht wirklich, wann man sie benutzt.

Die TL; DR ist: Wenn Sie eine NPE erhalten, bedeutet das normalerweise, dass Sie ein NULL-Attribut verwenden müssen.

Oder genauer gesagt: Wenn Ihre Daten möglicherweise Nullwerte enthalten, müssen Sie ein NULL-Attribut (z. B. SimpleNullableAttribute) anstelle eines nicht nullbaren (z. B. SimpleAttribute) verwenden.

Wie auch immer ich habe die Dokumentation auf der Haupt Readme.md erweitert, um "Null-Werte" im Detail zu diskutieren. Ich hoffe, das hilft!

Verwandte Themen