2012-01-13 21 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建議。