Tenho as seguintes classes:
@Entity
@Table(name = "AGENDA")
public class Agenda implements Serializable
{
@Id
@GeneratedValue
@Column(name = "ID", nullable = false)
private Integer id;
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private AgendaConfirmada confirmacao;
...
@Entity
@Table(name = "AGENDA_CONFIRMADA")
public class AgendaConfirmada implements Serializable
{
@Id
@Column(name = "ID", nullable = false)
private Integer id;
...
Quando vou cadastrar um novo agendamento e ele já está confirmado tenho que fazer o seguinte:
Agenda agendamento = new Agenda();
// atribuição de valores...
em.persist(agendamento);
em.flush();
em.refresh(agendamento); // flush() + refresh() para trazer o id
Confirmacao = new AgendaConfirmada();
// atribuição de valores...
confirmacao.setId(agendamento.getId());
agendamento.setConfirmacao(confirmacao);
em.merge(agendamento)
Uso JTA com container managed transactions.
Sem querer pedir demais, mas não tem como o Hibernate automaticamente setar o id de AgendaConfirmada e gravar tudo com um persist() apenas?
Obrigado,
Felipe