google-code-export / morphia

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

TypeConverter ignored for referenced member #384

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago

I define a TypeConverter like this :

morphia.getMapper().getConverters().addConverter( new IDConverter() );

and yet my class User, referenced Client, has an ID member that is not being 
converted -- even though the member of the User class is converted properly.  
So the converter seems to be ignored in the referenced class.

@Entity
public class User {
@Id
    ID id;
@Reference
    IClient client;
}

@Entity
public class Client  {
    @Id
    ID id;
 }

========

java.lang.IllegalArgumentException: can't serialize class ID
    at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:234)
    at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:140)
    at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:224)
    at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:140)
    at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:86)
    at com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:27)
    at com.mongodb.OutMessage.putObject(OutMessage.java:142)
    at com.mongodb.DBApiLayer$MyCollection.update(DBApiLayer.java:346)
    at com.mongodb.DBCollection.update(DBCollection.java:165)
    at com.mongodb.DBCollection.save(DBCollection.java:724)
    at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:731)
    at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:793)
    at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:787)

========

The IDConverter works fine - if I mark the client as @Transient.

Here is the decode method :

@Override
        public Object decode(final Class targetClass, final Object fromDBObject, final MappedField optionalExtraInfo) throws MappingException {
            return new ID((String) fromDBObject);
        }

Original issue reported on code.google.com by ones...@gmail.com on 27 Feb 2012 at 8:22