Mam ogólne pytanie o Hibernate, z którym walczę.Kaskada Hibernacji PERSISTA
mam klasy A i klasy B, gdzie B jest zależna od
W moim kodu gdy zgłoszę em.persist (objOfTypeA) spodziewałbym wkładka iść i wstawić do obu tabel AAA i BBB. Jeśli ręcznie narysuję identyfikator A i wypełnię go na liście dla każdego obiektu, a następnie utrzymuję tę listę, wszystko działa. Ale spodziewam się, że to się stanie magicznie przez Hibernate.
Czy robię coś nie tak? A może po prostu oczekuję zbyt dużo Hibernacji?
Dzięki
@Entity
@Table(name = "AAA")
@Veto
public class A {
@Id
@GeneratedValue
@Column(name = "Id")
private Long id;
@NotNull
@Column(name = "Name")
private Long name;
...
@OneToMany(mappedBy="a", fetch=FetchType.LAZY, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE})
private List<B> b;
...
}
@Entity
@Table(name = "BBB")
@Veto
public class B {
@Id
@GeneratedValue
@Column(name="Id")
private Long id;
@NotNull
@Column(name="AId")
private Long aId;
@NotNull
@Column(name = "Name")
private Long name;
@JoinColumn(name = "AId", referencedColumnName="Id", updatable = false, insertable = false)
@ManyToOne(optional = false)
private A a;
...
}
To nie działa dla mnie. Problem polega na tym, że Hibernate chce, aby A było ustawione na B przed kontynuowaniem. To zadziałało: http://stackoverflow.com/questions/1795649/jpa-persisting-a-one-to-many-relationship –