Estou utilizando o atributo cascade = CascadeType.ALL das anotações de relacionamento, porém persistiu tudo normalmente, mas faltou o cliente, como eu implementaria? sei que precisaria ser um relacionamento bidirecional, pois todos que estamos fazendo é unidirecional creio que ele deveria estar persistindo, mas isso não esta ocorrendo.
@Entity
public class Conta {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Integer agencia;
private Integer numero;
private String titular;
private Double saldo;
@OneToOne(cascade = CascadeType.ALL)
private Cliente cliente;
@Entity
public class Cliente {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private String profissao;
private String endereco;
@JoinColumn(unique = true)
@OneToOne(cascade = CascadeType.ALL)
private Conta conta;
public Conta getConta() {
return conta;
}
public class TestandoRelacionamentos {
public static void main(String[] args) {
Cliente cliente = new Cliente();
cliente.setNome("Elayne");
cliente.setEndereco("radialista Jota monteiro, 50");
cliente.setProfissao("professora");
Conta conta = new Conta();
conta.setAgencia(874964121);
conta.setNumero(5464132);
conta.setSaldo(300.00);
conta.setTitular(cliente.getNome());
cliente.setConta(conta);
Categoria categoria = new Categoria("Viagem");
Categoria categoria2 = new Categoria("Lanche");
Movimentacao mov = new Movimentacao();
mov.setCategoria(Arrays.asList(categoria, categoria2));
mov.setConta(conta);
mov.setData(LocalDateTime.now());
mov.setDescricao("Compra de comida na Bélgica");
mov.setTipoMovimentacao(TipoMovimentacao.SAIDA);
mov.setValor(new BigDecimal(200));
EntityManagerFactory emf = Persistence.createEntityManagerFactory("contas");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(mov);
em.getTransaction().commit();
}
}