Ich habe eine Play2-Anwendung mit eBean in PostgreSQL-Datenbank integriert.Cascade speichern Modell nicht speichern Beziehung
Grundsätzlich habe ich ein Modell TripRequest
das als eine Liste von Passenger
s. Der Anwendungsfall ist "Eine Reise hat mehrere Passagiere".
Für die TripRequest
Ich habe dieses Modell:
@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 ...)
Und das ist mein Passenger
Modell:
@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)
So schaffe ich eine neue Instanz von TripRequest
, mehrere Instanzen von Passenger
und festgelegt, dass Liste als die Passagiere von TripRequest
Instanz. Problem ist, dass wenn ich tripRequest.save()
alles in der Hauptinstanz (TripRequest
) wird gespeichert wird, aber die Beziehungen sind nicht (so die Passagiere Liste).
Ich lese in der Dokumentation und Beispielen und alles zeigt mich auf die CascadeType.ALL
in der @ManyToOne
Anmerkung, aber kein „Glück“ auf allen
EDIT: wenn er Sie die kompletten Klassen nützlich sind, lassen Sie es mich, wie ich weiß, kann sie posten. Ich habe mich einfach dafür entschieden, das Beispiel kurz zu halten, also habe ich sie getrimmt.
Ist das Ergebnis dasselbe, wenn die Kaskade stattdessen auf '@ OneToMany' gesetzt wird? – jsonmurphy
@jsonmurphy Ich bekomme eine NullPointerException wie beschrieben in https://gist.github.com/mribiro/2627ecb640bf19e0adb6 –