【问题标题】:Play-framework: Hashtable in a model?播放框架:模型中的哈希表?
【发布时间】:2012-01-13 11:29:16
【问题描述】:

我正在尝试创建一个带有一些访问器方法的哈希表模型。模型看起来是这样的......

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 类做什么,以及它是否是模型派生类本身(你说它是一个模型,但它没有扩展 Model)?
  • 抱歉造成混淆,你说得对,它没有扩展模型。我想用它来为用户存储一个哈希表,它被用作 User 类中的一个变量,它确实扩展了模型。

标签: java playframework


【解决方案1】:

我认为这会让你走到一半:How do I use JPA to persist a Map (java.util.Map) object inside an entity and ensure the persistence cascades?

但您仍然需要使 MyHash 本身可序列化,以便框架知道如何将其存储到数据库中:它需要成为 @Entity 本身。

【讨论】:

    【解决方案2】:

    尝试将@JsonAutoDetect 添加到您的 MyHash 类。查看jackson docs 了解更多信息。

    您还需要按照 craigmj 的建议正确映射哈希图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 1970-01-01
      • 2013-08-04
      • 2014-05-28
      • 2012-08-14
      • 1970-01-01
      • 2013-09-22
      相关资源
      最近更新 更多