私はDropwizardとSwaggerを使用して、さまざまなオブジェクトへのアクセスを管理するREST APIを作成しています。これらの2つのオブジェクトは、例えば、多対多の関係に関与している:再帰なしでDropwizard/Hibernate/Swaggerで多対多の関係で子オブジェクトを返すにはどうすればよいですか?
# Tricks:
[{ id: 1, name: 'Roll over' },
{ id: 2, name: 'Play dead' },
{ id: 3, name: 'Steal second' }]
# Puppies:
[{ id: 1, name: 'Flopsy' },
{ id: 2, name: 'Mopsy' },
{ id: 3, name: 'Cottontail' }]
# Puppies_Tricks
[{ puppy_id: 1, trick_id: 1 },
{ puppy_id: 1, trick_id: 2 },
{ puppy_id: 2, trick_id: 2 },
{ puppy_id: 2, trick_id: 3 }]
だから私は/子犬をGET/1 I:
public class Puppy implements Serializable {
private Long id;
private String name;
@ManyToMany(targetEntity = Trick.class)
@JoinTable(
name="puppies_tricks",
[email protected](name="puppy_id"),
[email protected](name="trick_id"))
private List<Trick> tricks;
@JsonProperty("tricks")
public List<Trick> getTricks() { return this.tricks; }
...
}
public class Trick implements Serializable {
private Long id;
private String name;
@ManyToMany(targetEntity = Puppy.class)
@JoinTable(
name="puppies_tricks",
[email protected](name="trick_id"),
[email protected](name="puppy_id"))
private List<Puppy> puppies;
@JsonProperty("puppies")
public List<Puppy> getPuppies() { return this.puppies; }
...
}
そして、実際のデータを仮定は次のようになります以下のような構造を取得したい:
{
"id": 1,
"name": "Flopsy",
"tricks": [
{ "id": 1, "name": "Roll over"},
{ "id": 2, "name": "Play dead" } ]
}
が、私は実際に取得していますと、ネストされた配列である:
{
"id": 1,
"name": "Flopsy",
"tricks": [
{ "id": 1, "name": "Roll over", "puppies": [ { "id": 1, "name": "Flopsy" }, ...},
{ "id": 2, "name": "Play dead", "puppies": [...] } ]
}
ジャクソン/ドロップワイザーに、子犬を貰うときのトリックを降りるのを止めるように指示する方法はありますか?
Dropwizard 1.0.6、Java 1.8。
あなたは説明してもいいですか?子犬を手に入れるまでのトリックで下降を止めてください。逆もありますか?*もう少し(もっと簡単に)してください。 – nullpointer
明確にするための情報が追加されました。本質的な問題は、子犬のために質問するとき、私はその子犬のトリックのリストがほしいと思うので、私は他の子犬がそれぞれのトリックを実行できるリストを見たくないということです。 – Zee
http://stackoverflow.com/a/9768357/25429では、可能なアプローチをまとめたものです。 – zloster