2012-01-13 48 views
1

我正试图创建一个模型,它是一个存取方法的哈希表。该模型看起来像这样...播放框架:模型中的散列表?

public class MyHash(){ 
    Hashtable<Integer, CustomObject> hash = new Hashtable<Integer,CustomObject>(); 
    //few accessor methods here... 
} 

该类然后在另一个模型中使用。当其他模式启动,像这样的变量...

this.hash = new MyHash(); 

以下异常时...

Internal Server Error (500) for request POST /login 

Execution exception (In /app/controllers/Security.java around line 70) 
IllegalArgumentException occured : No serializer found for class models.MyHash and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS)) (through reference chain: User["hash"]) 

play.exceptions.JavaExecutionException: No serializer found for class models.MyHash and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS)) (through reference chain: User["hash"]) 
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:231) 
at Invocation.HTTP Request(Play!) 
Caused by: java.lang.IllegalArgumentException: No serializer found for class models.ListOfFilters and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS)) (through reference chain: User["hash"]) 
at org.codehaus.jackson.map.ObjectMapper._convert(ObjectMapper.java:1784) 
at org.codehaus.jackson.map.ObjectMapper.convertValue(ObjectMapper.java:1750) 
at play.modules.mongo.MongoMapper.convertValue(MongoMapper.java:12) 
at play.modules.mongo.MongoDB.save(MongoDB.java:239) 
at models.User.save(User.java) 
at controllers.Security.createNewUser(Security.java:70) 
at controllers.Security.authenticate(Security.java:36) 
at play.utils.Java.invokeStaticOrParent(Java.java:161) 
at play.utils.Java.invokeChildOrStatic(Java.java:183) 
at controllers.Secure$Security.invoke(Secure.java:187) 
at controllers.Secure$Security.access$0(Secure.java:184) 
at controllers.Secure.authenticate(Secure.java:64) 
at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:548) 
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:502) 
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:478) 
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:473) 
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161) 
... 1 more 
Caused by: org.codehaus.jackson.map.JsonMappingException: No serializer found for class models.MyHash and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS)) (through reference chain: User["hash"]) 
at org.codehaus.jackson.map.ser.StdSerializerProvider$1.serialize(StdSerializerProvider.java:62) 
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:268) 
at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:160) 
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:131) 
at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:297) 
at org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:224) 
at org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:1030) 
at org.codehaus.jackson.map.ObjectMapper._convert(ObjectMapper.java:1777) 
... 17 more 
+0

你可能会提供更多的背景吗?我不太明白你想用MyHash类做什么,以及它是否是一个Model派生类本身(你说它是一个模型,但它不会扩展'Model')? – craigmj 2012-01-13 12:22:48

+0

对于混淆抱歉,你是正确的,它不扩展模型。我想用它来为用户存储一个散列表,并且它被用作扩展模型的类User中的一个变量。 – Skizit 2012-01-13 12:32:22

回答

0

尝试将@JsonAutoDetect添加到MyHash类。检查jackson docs欲知更多信息。

此外,你需要正确地映射你的hashmap craigmj建议。