避免与序列化程序的无限递归关系(angularjs)

avoid Infinite recursion relationships with serializer (angularjs)

我目前正在尝试实现一个具有@OneToMany 关系的RESTful 应用程序。

我的实体是团队和玩家(一个团队,许多玩家 - 一个玩家对一个团队)

为了避免无限递归,我决定使用 returns id 的序列化程序。此序列化程序作为注释添加到匹配属性。

我跟邮递员核对了,没问题。但是当我尝试在我的前端显示值时,球员的 teamid 以 JSON 格式显示(见图)。

picture of my problem

如何将 id 值更改为简单数字?这是 angular 问题吗?我是这个框架的新手,只是复制了一个简单的控制器来查看 ng-repeat 循环中的结果 table

这是我的实体:

团队:

@Entity
@Table(name = "TEAMS")
public class Team {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;

@Column(name = "TEAMNAME")
private String teamname;

@OneToMany(mappedBy = "team")
private List<Player> players;

//..getter/setter etc..
}

玩家:

@Entity
@Table(name = "PLAYERS")
public class Player {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;

@Column(name = "NAME")
private String name;

@ManyToOne
@JoinColumn(name = "TEAMID")
@JsonSerialize(using = TeamSerializer.class)
private Team team;

//..getter/setter etc.

序列化程序:

public class TeamSerializer extends JsonSerializer<Team>{

@Override
public void serialize(Team team, JsonGenerator jgen, SerializerProvider provider)
        throws IOException, JsonProcessingException {
    jgen.writeStartObject();
    jgen.writeNumberField("id", team.getId());
    jgen.writeEndObject();

  }
}

和 app.js 条目:

app.controller({
PlayerListController: function($scope, Player) {
    $scope.players = Player.query();
}
});

并通过以下方式调用它:

<tr ng-repeat="player in players">
    <td>{{player.id}}</td>
    <td>{{player.name}}</td>
    <td>{{player.team}}</td>
</tr>

How can I change the id value to a simple number?

更改自:

<td>{{player.team}}</td>

至:

<td>{{player.team.id}}</td>