Ho una domanda generale su Hibernate con la quale sto combattendo.Hibernate Cascade PERSIST
devo di classe A e di classe B, dove B è dipendente da un
Nel mio codice quando chiamo em.persist (objOfTypeA) mi aspetterei l'inserto di andare e inserire in entrambe le tabelle AAA e BBB. Se presagisco manualmente A ottengo l'ID di A e lo compilo nella lista per ogni oggetto e poi continuo quell'elenco, le cose stanno funzionando. Ma mi aspetto che questo accada magicamente da Hibernate.
Sto facendo qualcosa di sbagliato? O mi sto solo aspettando troppo da Hibernate?
Grazie
@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;
...
}
Questo non ha funzionato per me. Il problema è che Hibernate vuole che A sia impostato su B prima di persistere. Questo ha funzionato: http://stackoverflow.com/questions/1795649/jpa-persisting-a-one-to-many-relationship –