【发布时间】:2017-08-23 15:08:56
【问题描述】:
我目前正在尝试使用 @OneToMany 关系实现一个 RESTful 应用程序。
我的实体是团队和玩家(一个团队,许多玩家 - 一个玩家对一个团队)
为了避免无限递归,我决定使用返回 id 的序列化程序。此序列化程序已作为注释添加到 match 属性。
当我用邮递员检查它时它工作正常。但是当我尝试在我的前端显示值时,玩家的 teamid 以 JSON 格式显示(见图)。
如何将 id 值更改为简单的数字?这是角度问题吗?我是这个框架的新手,只是复制了一个简单的控制器来查看 ng-repeat 循环表中的结果
这是我的实体:
团队:
@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>
【问题讨论】:
标签: angularjs angularjs-scope jsonserializer