2017-08-23 16 views
1

現在、@ OneToMany関係を持つRESTfulアプリケーションを実装しようとしています。私はIDを返しますシリアライザを使用することを決定し、無限の再帰を避けるためにシリアライザ(angularjs)との無限再帰関係を避ける

-

私のエンティティは、チームや選手(正確に一つのチームに一人のプレイヤー1つのチーム、多くのプレイヤー)です。このシリアライザは、注釈としてmatch属性に追加されました。

私は郵便配達員とチェックすると問題なく動作します。しかし、フロントエンドに値を表示しようとすると、選手のチームIDはJSON形式で表示されます(画像参照)。私は、単純な数にid値を変更するにはどうすればよい

picture of my problem

?これは角度の問題ですか?私は、このフレームワークに新しいですし、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>