使用Spring MVC生成JSON的堆栈溢出错误

时间:2016-01-07 03:14:49

标签: java json spring spring-mvc

我正在尝试将Java对象转换为JSON并将其显示在网页上。发生的事情是插件打印一次,细节和用户无限打印。

以下是我试图打印它的方式

@RequestMapping(value = "/json/{userName}", method = RequestMethod.GET, produces = "application/json; charset=UTF-8")
@ResponseBody()
public List<Plugs> getPlugs(@PathVariable("userName") String userName) {
    User userInfo = userDAO.getUserInfo(userName);
    System.out.println("------Here's the thing------");
    System.out.println(userInfo.getDetails().getPlugs());
    return userInfo.getDetails().getPlugs();
}

以下是使用JPA的每个表之间的关系

//User.java
@OneToOne(fetch = FetchType.LAZY, mappedBy = "user")
private Details details;

-

//Details.java
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "username")
private User user;

@OneToMany(mappedBy = "details", targetEntity = Plugs.class)
private List<Plugs> plugs;

-

//Plugs.java
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_code", referencedColumnName = "post_code")
private Details details;

我已经在私有字段和getter或@JsonIgnore@JsonBackReference上尝试了@JsonManagedReference等方法(但也许有人可以告诉我如何再次执行此操作)和@JsonIdentityInfo(也许有人也可以帮我解决这个问题。)

问题:如何以JSON格式打印插件而不是其他内容?

如果需要更多代码,我会提供更多代码。

1 个答案:

答案 0 :(得分:0)

解决了这个问题。这是我更改代码的地方

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "username")
@JsonIgnore
@XmlTransient
private User user

-

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_code", referencedColumnName = "post_code")
@JsonIgnore
@XmlTransient
private Details details;

在每个实体的顶部,我把这个

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@id")