私は、PostgreSQLデータベースと統合されたeBeanを使用するPlay2アプリケーションを持っています。カスケードセーブモデルは関係を保存していません
基本的に私はモデルTripRequest
をPassenger
のリストとして持っています。ユースケースは「旅には複数の乗客がいる」というケースがあります。
@Entity
public class TripRequest extends Model {
enum Status {
OPEN,
PROCESSING,
CLOSED,
CANCELLED
}
@Id
private UUID id;
@ManyToOne
@Column(nullable = false)
private User owner;
@OneToMany(mappedBy = "tripRequest")
@JoinTable(name = "trip_passengers")
private List<Passenger> passengers;
(... other fields, getters and setters ...)
そして、これが私のPassenger
モデルです::だから
@Entity
@Table(name = "trip_passenger")
public class Passenger extends Model {
@ManyToOne(cascade = CascadeType.ALL)
private TripRequest tripRequest;
@Column(nullable = false)
private String name;
(... other fields, getters and setters)
、私はTripRequest
の新しいインスタンスを作成し、Passenger
とセットの複数のインスタンス私はこのモデルを持っているTripRequest
するため
TripRequest
インスタンスの乗客リスト。 問題が発生したときに、tripRequest.save()
メインインスタンス()のすべてが保存されますが、リレーションシップは保存されません(したがって、乗客のリスト)。
すべて
EDITで、私はドキュメントとサンプルを読み込みませんし、すべてが@ManyToOne
注釈にCascadeType.ALL
に私を指しているが、何の「運」:あなたは完全なクラスが便利だと思うなら、私は私のように知らせてください投稿することができます。私はそれらを整えたので、例を短く保つことに決めました。
カスケードが '@ OneToMany'に置かれても結果は同じですか? – jsonmurphy
@jsonmurphy https://gist.github.com/mribeiro/2627ecb640bf19e0adb6 –