我正在尝试将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格式打印插件而不是其他内容?
如果需要更多代码,我会提供更多代码。
答案 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")