2017-08-23 41 views
1

我目前正試圖用@OneToMany關係實現一個RESTful應用程序。避免與序列化程序無關的遞歸關係(angularjs)

我的實體是球隊和球員(一個球隊,很多球員 - 一名球員只有一個隊)

爲了避免無限遞歸我決定使用返回id的序列化。該序列化程序被添加爲匹配屬性的註釋。

它可以正常工作,當我檢查郵遞員。但是當我嘗試在我的前端展示這些值時,玩家隊伍將以JSON格式顯示(請參閱圖片)。

picture of my problem

我怎樣才能id的值更改爲一個簡單的數字?這是一個角度問題嗎?我是新來這個框架,只是複製一個簡單的控制器來查看在NG-重複的結果循環表

這裏是我的實體:

團隊:

@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> 

回答

0

我怎樣才能id的值更改爲一個簡單的數字?

變化來自:

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

到:

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