google-code-export / morphia

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

Object as key throws MappingExceptions #426

Open GoogleCodeExporter opened 9 years ago

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

- 2.8.0 Java driver
- Morphia 0.99

ID class:

@Entity(noClassnameStored = true)
class ProbId {

  @NotNull
  @Property("t")
  String text;

  @NotNull
  @Property("sl")
  String language;

  /**
   * The target language
   */
  @NotNull
  @Property("dl")
  String destLanguage;

}

Object class like:

@Entity(noClassnameStored = true)
public class Probabilities implements Modifiable {

  /**
   * The unique source text/language combination
   */
  @NotNull
  @Id
  ProbId id;

...

}

It seems to work to fetch objects like this:

final ProbId key = new ProbId(srcText, srcLang, destLang);
final Query<Probabilities> query = 
Mongo.createQuery(Probabilities.class).field("id").equal(key);
Probabilities probabilities = query.get();

However, we get a SEVERE log report:

Aug 30, 2012 7:44:03 PM com.google.code.morphia.mapping.Mapper toMongoObject
SEVERE: Error converting value(ProbId{t='good',sl='eng',dl='sve'}) to reference.
com.google.code.morphia.mapping.MappingException: Could not get id for 
transmachina.jerome.corpus.ProbId
    at com.google.code.morphia.mapping.Mapper.getKey(Mapper.java:446)
    at com.google.code.morphia.mapping.Mapper.toMongoObject(Mapper.java:390)
    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)
    at transmachina.jerome.corpus.Probabilities.get(Probabilities.java:149)

Is there a way to do this without errors being logged?

Original issue reported on code.google.com by n.cottr...@global-commission.org on 30 Aug 2012 at 7:52