内のエンティティに両方の方法を設定する必要があります:は、なぜ私は私は2つの次のエンティティを持っているJPA
@Entity
public class Pilot implements Serializable {
....
@ManyToOne
@JoinColumn(name = "FLIGHT_ID")
private Flight flight;
}
と
@Entity
public class Flight implements Serializable {
....
@OneToMany(mappedBy = "flight")
private List<Pilot> pilots;
}
私は飛行機にパイロットを追加するEJBを使用しています:
public void addPilotToFlight(String pilotId, String flightId) {
<code to find Flight f>
<code to find Pilot p>
p.setFlight(f);
f.getPilots().add(p); // Why do I need this one?
}
なぜ私はオブジェクトを両方向にリンクする必要がありますか?
f.getPilots().add(p);
部分の有無にかかわらずコードを試しましたが、DBではまったく同じように見えます。しかし、同じフライトエンティティオブジェクトに対してf.getPilots();
を使用しようとすると、上記の双方向リンクを行った場合にのみ表示されます。誰もがこれについていくつかの光を発することができますか?私はとても感謝しています。前もって感謝します。
キャッシングによってパフォーマンスが向上するアプリケーション全体で処理されてもスケーラビリティは向上しますが、そのコストとドローバックがあります。あなたのエンティティのアクセサメソッドでもう一方の側を簡単に設定できるので、この問題のために私はそれをオフにしません。 – Chris