google-code-export / morphia

Automatically exported from code.google.com/p/morphia
1 stars 0 forks source link

Exceptions when searching for null @Reference(ignoreMissing=true) #326

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What version are you using? (Morphia/Driver/MongoDB)
trunk: r1764

Please include a stack trace below:

Here is my domain:
@Entity
public class SuperTreeModel implements Serializable {
    private static final long serialVersionUID = 2387446018435482085L;

    @Id private ObjectId id;

    @Reference(ignoreMissing=true)
    private SuperTreeModel parent;

    private boolean haveChild;

    private String name;
    (...)
}

When searching for entities where the parent is null, I'm getting exceptions.

The code:
ds.find(entityClazz).field("parent").doesNotExist().asList();
Will give:
GRAVE: Error converting value(false) to reference.
com.google.code.morphia.mapping.MappingException: Could not get id for 
java.lang.Boolean
    at com.google.code.morphia.mapping.Mapper.getKey(Mapper.java:432)
    at com.google.code.morphia.mapping.Mapper.toMongoObject(Mapper.java:376)
    at com.google.code.morphia.query.FieldCriteria.<init>(FieldCriteria.java:47)
    at com.google.code.morphia.query.FieldEndImpl.addCrit(FieldEndImpl.java:35)
    at com.google.code.morphia.query.FieldEndImpl.doesNotExist(FieldEndImpl.java:86)
    at com.google.code.morphia.query.FieldEndImpl.doesNotExist(FieldEndImpl.java:11)

The code:
ds.find(entityClazz).field("parent").equal(null).asList();
Will give:
GRAVE: Error converting value(null) to reference.
java.lang.NullPointerException
    at com.google.code.morphia.mapping.Mapper.getId(Mapper.java:407)
    at com.google.code.morphia.mapping.Mapper.getKey(Mapper.java:430)
    at com.google.code.morphia.mapping.Mapper.toMongoObject(Mapper.java:376)
    at com.google.code.morphia.query.FieldCriteria.<init>(FieldCriteria.java:47)
    at com.google.code.morphia.query.FieldEndImpl.addCrit(FieldEndImpl.java:35)
    at com.google.code.morphia.query.FieldEndImpl.equal(FieldEndImpl.java:90)
    at com.google.code.morphia.query.FieldEndImpl.equal(FieldEndImpl.java:11)

Original issue reported on code.google.com by d...@cloud3.tc on 20 Sep 2011 at 12:47

GoogleCodeExporter commented 9 years ago
This occurs even without (ignoreMissing=true)

Original comment by intdutch...@gmail.com on 10 Dec 2011 at 11:06

GoogleCodeExporter commented 9 years ago
I think this one could be easily fixed. I have attached a patch, which fixes 
the exception in my case. (I didn't run the unit tests though)

Original comment by matthias...@gmail.com on 2 Jan 2012 at 11:00

Attachments:

GoogleCodeExporter commented 9 years ago
This issue was closed by revision r1799.

Original comment by scotthernandez on 3 Jan 2012 at 9:23

GoogleCodeExporter commented 9 years ago
I have the exact same issue, and the fix does not seem to work for me. I'm 
using SVN HEAD from today (r1815) and cannot query for null references. 

Original comment by the.ma...@gmail.com on 25 Apr 2012 at 9:51