Java Netbeans Restful服务给了我"无限JSON#34;

时间:2014-10-14 03:46:25

标签: java json jsp rest netbeans

我刚开始使用Netbeans提供的Restfull Web服务。

我创建了两个实体。首先是玩家,第二个是 VehicleDetail 。两者都有ManyToMany关系:

播放器:

@ManyToMany(mappedBy = "players", fetch = FetchType.LAZY)
private List<VehicleDetail> vehicleDetails;

VehicleDetail

@ManyToMany(fetch = FetchType.LAZY)
private List<Player> players;

我创建了JSP页面,您可以在其中创建新的Players和VehicleDetails。我为我的实体添加了Restfull Web服务。他们将向我提供有关实体的信息作为JSON。

当我通过JSP页面添加新的Players和VehicleDetails然后我通过GET HTTP方法测试Restfull服务时,它显示了正确的JSON。

然后我将VehicleDetail添加到我的玩家列表和Player to VehicleDetails列表并更新了它们:

Player player = db.getPlayer(playerId);
VehicleDetail detail = db.getVehicleDetail(detailId);

player.getVehicleDetails().add(detail);
detail.getPlayers().add(player);

db.updateObject(player);
db.updateObject(detail);

db.updateObject(Object o)的代码是:

@Override
public void updateObject(Object o) {
    em.merge(o);
    em.flush();
}

现在,当我试图看到我的播放器时。我创建HTTP GET方法以将Player视为JSON。它告诉我&#34; INFINITE&#34; JSON。它告诉我,它让VehicleDetail得到了这个获得此播放器的VehicleDetail的播放器,依此类推。它给了我例外;

java.lang.NoClassDefFoundError: org/codehaus/jackson/map/JsonMappingException$Reference

问题:我需要做什么? FETCHTYPE.LAZY不起作用。

1 个答案:

答案 0 :(得分:0)

您应该将@JsonIgnore注释添加到多对多关系中的一方。

   @ManyToMany(mappedBy = "players", fetch = FetchType.LAZY)
   @org.codehaus.jackson.annotate.JsonIgnore
   private List<VehicleDetail> vehicleDetails;  

   @ManyToMany(fetch = FetchType.LAZY)
   @org.codehaus.jackson.annotate.JsonIgnore
   private List<Player> players;