java - jackson Blob 异常

标签 java jackson spark-java jackson2 jackson-databind

我试图将图像保存到数据库,但出现错误:

org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.sql.Blob, problem: abstract types can only be instantiated with additional type information
 at [Source: java.io.StringReader@e95dbd; line: 1, column: 27] (through reference chain: com.soul.seeker.models.Post["postImage"])
        at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
        at org.codehaus.jackson.map.deser.StdDeserializationContext.instantiationException(StdDeserializationContext.java:233)
        at org.codehaus.jackson.map.deser.AbstractDeserializer.deserialize(AbstractDeserializer.java:60)
        at org.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:299)
        at org.codehaus.jackson.map.deser.SettableBeanProperty$MethodProperty.deserializeAndSet(SettableBeanProperty.java:414)
        at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:697)
        at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)
        at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2732)
        at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1863)
        at com.soul.seeker.serviceImpl.PostServiceImpl.createPostImage(PostServiceImpl.java:121)
        at com.soul.seeker.Application.lambda$main$8(Application.java:142)
        at spark.ResponseTransformerRouteImpl$1.handle(ResponseTransformerRouteImpl.java:47)
        at spark.http.matching.Routes.execute(Routes.java:61)
        at spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:130)
        at spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)
        at org.eclipse.jetty.server.Server.handle(Server.java:517)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
        at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
        at java.lang.Thread.run(Thread.java:745)

Pojo 类:

public class Post{

   private String post_id;
   private String title;
   private String details;
   private String username;
   private String userImage;
   private String url;
   private List categories;
   private String created_at;
   private Blob postImage;    //BLOB TYPE
   private String postImageName;

   //getters setters
}

实现类:

@Override
    public void createPostImage(Request request) {
        try {
            ObjectMapper mapper = new ObjectMapper();
            Post createPostImage = mapper.readValue(request.body(), Post.class);
            System.out.println("CREATE POST IMAGE" + createPostImage);
        } catch (IOException ex) {
            Logger.getLogger(PostServiceImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

在网上查找类似的帖子,但找不到任何线索。我该如何解决?它表示抽象类型只能使用附加类型信息进行实例化。我必须在此处传递哪些附加信息?

最佳答案

我不确定您尝试上传文件的方法,但我确信这不是使用 Spark 时的“推荐”方法。 根据文档,您应该将文件作为流读取并使用 request.raw()为此目的,而不是 request.body() .

阅读推荐方式here ,还有一个github example为此。

关于java - jackson Blob 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43266619/

相关文章:

java - 尝试使用 java 发送邮件时获取 javax.mail.NoSuchProviderException

java - 使用 Jackson 序列化 ImmutableMap 时如何保留类型信息?

java - 需要有关创建通用数组的帮助

java - REST - 当我使用 GET 时 SparkJava 不更新对象 JSON

java - Spark 应用程序不发送中间/链证书

Java - Hibernate.cfg.xml - 无法解析文件中的驱动程序

java - 如何为 SWT Scrolled Composite 设置启用水平滚动

java - Spring Boot 应用程序发出的日志中的一组值的含义是什么?

java - jackson :根据字段类型添加后缀

java - SparkJava 无法与某些 Google Youtube API 一起使用