避免与序列化程序的无限递归关系(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>
我目前正在尝试实现一个具有@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>