我正在尝试创建一个模型,它是一个带有一些访问器方法的哈希表。该模型看起来像这样...
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
最佳答案
但是您仍然需要使 MyHash 本身可序列化,以便框架知道如何将其存储到数据库中:它本身需要成为 @Entity。
关于java - Play Framework : Hashtable in a model?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8849882/