当前位置: 首页 > 知识库问答 >
问题:

com.fasterxml.jackson.databind.JsonMapping异常:对象不是声明类的实例

汝昀
2023-03-14

我有一个CookingEvent.class,它是Event.class的子类,hibernate继承策略是@ Inheritance(strategy = Inheritance type。已加入)。当我试图发送一个列表对象作为get响应时。我不例外

2016-08-25 11:49:22.351错误11944---[nio-8189-exec-1]o.a.c.c.c.[.[/]。[servletContainer]:Servlet。路径为[]的上下文中servlet[servletContainer]的service()引发异常[org.glassfish.jersey.server.ContainerException:com.fasterxml.jjackson.databind.JsonMappingException:对象不是声明类的实例(通过引用链:java.util.ArrayList[0]-

java.lang.IllegalArgumentException:对象不是sun.reflect.NativeMethodAccessorImpl处声明类的实例。位于com.fasterxml.jockson.databind.ser.BeanPropertyWriter.get(BeanProportyWriter java:726)的sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethAccessorInpl.java:62)的invoke0(本机方法)com.fasterxml.jockson.databind.ser.BeanPropertyWriter.serializeAsField(BeanProportyWriter.java:506)位于com.faster xml.joctson.databond.ser.std.BeanSerializerBase.serializationFields(BeanSerializerBase.java:644)位于com.sfasterxml.jockson.databind.ser.BeanSerializer.serializer(BeanArializer.java:152)

@Entity
@Table(name = "users")
@JsonAutoDetect
public class Users  implements java.io.Serializable {

  @JsonBackReference
    private List<Event> eventByUser = new ArrayList<Event>(
            0);

    @Id
    @GeneratedValue
    @Column(name = "USER_ID", unique = true)
    public Long getUserId() {
        return userIds;
    }
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
    @Fetch(FetchMode.JOIN)
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @JsonIgnore
    public List<Event> getEventByUser() {
        return eventByUser;
    }
}


  @Entity
    @Table(name = "EVENT")
    @Inheritance(strategy=InheritanceType.JOINED)
    public class Event  implements java.io.Serializable {

        private Integer eventId;

        @Id
        @GeneratedValue
        @Column(name = "COOKING_EVENT_ID", unique = true)
        public Integer getEventId() {
            return eventId;
        }
        private Users user;

        @ManyToOne(fetch = FetchType.LAZY)
    @Fetch(FetchMode.SELECT)
    @JsonIgnore
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @JoinColumn(name = "ASSIGNED_USER_ID", nullable = false)
    @JsonManagedReference
    public Users getUser() {
        return user;
    }

        public void setEventId(Integer eventId) {
            this.eventId = eventId;
        }



 @Entity
    @Table(name = "COOKING_REQUEST_EVENT") @PrimaryKeyJoinColumn(name="EVENT_ID") 
public class CookingRequestEvent extends Event implements java.io.Serializable {

        //Other Variables along with setters and getters 

        }

我有一个泽西岛控制器,如下所示,它返回一个列表

  @GET
        @Path("/cookingEventsByUser/{userId}")
        @Produces({ MediaType.APPLICATION_JSON})
        public List<CookingEvent>  getEventsById(@PathParam("userId") Long id)
                throws JsonGenerationException, JsonMappingException, IOException {
          List<CookingEvent> events  = new ArrayList<CookingEvent>();
         events =  cookingEventServices.getCookingEventsByUser(id);

        } 

我正在使用Spring Boot Jersey hibernate

共有1个答案

巢承安
2023-03-14

问题已解决。

已添加

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include =As.PROPERTY, property = "data")
@JsonSubTypes({ @Type(value = CookingEvent.class, name = "cookingEvent"), @Type(value = CookingRequestEvent.class, name = "cookingRequest") })
 类似资料:
  • 问题内容: 我已经有一段时间没有接触过Mockito了,我也从未广泛使用它。但是今天,在一些新代码中,我想使用最佳实践,因此我使用以下Java版本退出了模仿内核2.0.54-beta: 我需要此接口的实例进行测试: https://bitbucket.org/globalmentor/rincl/src/bf0e8875a1bae16247dd904e0b8bc067c9f8abc9/src/ma

  • 我有一段时间没有接触过Mockito,也从来没有大量使用过它。但是今天在一些新代码中,我希望使用最佳实践,所以我使用以下Java版本推出了mockito-core 2.0.54-beta: 要重现此问题,请克隆https://bitbucket.org/globalmentor/rincl.git并签出commit2f88d7c5e5ac17b6d316ed54c12cb7b447b7d6ac。然

  • 问题内容: 这个问题在Google上到处都有,但我仍然遇到问题。这就是我想要做的。因此,就像标题状态一样,我遇到了“对象不是声明类的实例”错误。有任何想法吗?谢谢! Main.java TestFunction.java 问题答案: 您正在使用该类调用该方法,但需要一个实例。试试这个:

  • 我已经设置了一个Spring Boot项目,并使用castor xml依赖关系将POJO转换为xml。 在为POJO调用封送处理方法时遇到问题。我查阅了stackoverflow的其他相关问题,但没有一个能解决我的场景。 有一个toString方法,它位于Spring组件中。 以下是片段: 这是客户端内部的封送方法(castor之前自动生成的类): 以下是相同的堆栈跟踪: 这里需要注意的是,当我执

  • 用户类 我把这个复制方法叫做 并在执行writeMethod.invoke(dest,val)时获得以下异常。有人能帮忙吗? 对象不是在java.base/jdk.internal.reflect.nativeMethodAccessorImpl.Invoke0(原生方法)在java.base/jdk.internal.reflect.nativeMethodAccessorImpl.Invoke

  • 问题内容: 我的ejb项目使用的是Hibernate 4.3.6和Glassfish 4.0。 我的考试道课: 和POJO类Foo.class: persistence.xml: 我可以列出表数据,通过查询获取数据,也可以从表中删除数据。但是我不能坚持或合并。 例外是: 我在哪里做错了? 此项目在具有persistence.xml版本1.0(jpa)且没有此行的Glassfish 3.1上工作: