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

Jackson部分工作,无法返回列表或集合

方长卿
2023-03-14

我正在使用spring MVC&hibernate作为我的WebApp。现在的问题是,如果返回一个对象,我可以生成json,但不能生成列表。我错过什么了吗?

(1)如果我访问此:

@ResponseBody
@RequestMapping("/mobile/userDetail")
public UserDetail generateUserDetailJson(){
    return userDetailService.getUserDetail(1);
}

结果好的,我将得到这个json返回:

{"udId":1,"udTitle":"Mr","udUsername":"username","udFirstname":"firstname","udLastname":"lastname","udGender":"male","udPhoto":"c:/folder/gg.jpg","udPassword":"password","udEmail":"email@email.com","udPhoneHome":"01234567890","udPhoneMobile":"","udType":"customer","udLanguage":"ms","udLoginLast":1466875438000,"udLoginCount":0,"udCreateDatetime":1466875438000,"udStatus":2,"bodyMeasures":[{"bmId":1,"bmHeight":171,"bmNeck":null,"bmShoulder":null,"bmArm":null,"bmChest":null,"bmWaist":null,"bmHip":null,"bmInseam":null,"bmThigh":null,"bmCalf":null,"bmFoot":null,"bmHead":null,"bmCreateDatetime":1466875438000,"bodyMeasureHistories":[]}],"addresses":[],"userDetailHistories":[]}

(2)但如果我访问这个:

@ResponseBody
@RequestMapping("/mobile/userDetails")
public Collection<UserDetail> generateUserDetailsJson(){
    Collection<UserDetail> collection = userDetailService.listUserDetails(); 
    return collection;
}

我会得到这个例外。

<mvc:annotation-driven />
<tx:annotation-driven />
jackson-annotations-2.7.0.jar

jackson-core-2.7.0.jar

jackson-databind-2.7.0.jar

javax.el-2.2.4.jar

javax.el-api-2.2.4.jar

实体表已配置Jackson:

@Entity
@Table(name = "body_measure", catalog = "faddistwardrobedb")
public class BodyMeasure implements java.io.Serializable {
    @ManyToOne(fetch = FetchType.LAZY)
    @JsonBackReference
    @JoinColumn(name = "ud_id")
    private UserDetail userDetail;
    //etc....
}

@Entity
@Table(name = "user_detail", catalog = "faddistwardrobedb")
public class UserDetail implements java.io.Serializable {

    @JsonManagedReference
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "userDetail")
    //etc.....
}

有什么我错过的吗?还是图书馆互相起了冲突?多谢了。

共有1个答案

谢泉
2023-03-14

找到了解决办法,但不知道细节出了什么问题。我的解决方案:Glassfish 4.1->Glassfish 4.1.1重新编译并运行,问题解决了。希望能帮助面临同样错误的人。

 类似资料:
  • 问题内容: 我目前正在使用“设置”结构使用Redis。 我想知道是否有可能自动清理空的“ set”吗? 否则找到一个cron /进程来定期清理空的“ set” 更新: 更笼统的问题是,“(nil)”和“(空列表或集合)”之间存在差异(内存使用情况) 例: 要么 问题答案: 这已经是自动的。如果集合为空,则将其从名称空间中删除。 您不必执行任何特定操作即可从此行为中受益。 要回答第二个问题,(nil

  • 问题内容: 我正在尝试创建控制器操作,该操作将根据参数返回JSON或部分html。使结果异步返回到MVC页面的最佳方法是什么? 问题答案: 在您的操作方法中,返回Json(object)以将JSON返回到您的页面。 然后只需使用Ajax调用action方法即可。您可以使用ViewPage中的一种辅助方法,例如 SomeMethod将是一个javascript方法,然后评估返回的Json对象。 如果

  • 我正在用Laravel 8制作一个论坛,基本上每当用户在这个论坛上提问时,它应该被重定向到这个问题。 我还想使重定向过程基于问题的字段。 因此,为了做到这一点,我在方法的末尾添加了以下内容: 下面是看问题的路线: 然后我在控制器编码: 但现在的问题是,当我尝试添加新问题时,该问题将成功添加,但它会将我重定向到页面。重定向后的URL也如下所示: 正如你所看到的问题没有正确添加! 那么这里出了什么问题

  • 问题内容: 有没有一种方法可以将部分呈现为MVC的JSON响应的一部分返回HTML字符串? 问题答案: PartialViewResult和ViewResult都从ViewResultBase派生,因此相同的方法应该对两者都起作用。 使用上面线程中的代码,您将可以使用:

  • 问题内容: 我有一个实现了Serializable的TouchPoint类,因为它包含位图,所以我为该类编写了writeObject和readObject: 问题是我得到了 SkImageDecoder :: Factory返回null 那么我该如何解决。我知道可能的解决方案是将writeObject()更改为 但是这种方法要慢10倍以上。 copyPixelsToBuffer〜14ms用于写入图