1
現在、@ OneToMany関係を持つRESTfulアプリケーションを実装しようとしています。私はIDを返しますシリアライザを使用することを決定し、無限の再帰を避けるためにシリアライザ(angularjs)との無限再帰関係を避ける
-
私のエンティティは、チームや選手(正確に一つのチームに一人のプレイヤー1つのチーム、多くのプレイヤー)です。このシリアライザは、注釈としてmatch属性に追加されました。
私は郵便配達員とチェックすると問題なく動作します。しかし、フロントエンドに値を表示しようとすると、選手のチームIDはJSON形式で表示されます(画像参照)。私は、単純な数に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>