Rodei a classe TesteMovimentacoesComCategoria e os registros do campo id na tabela categoria ficaram 3 e 4. Não era pro id ser 1 e 2?
print do "select * from categoria":
Achei estranho isso. E aí pessoal, isso está certo? Obrigado.
@Entity
public class Movimentacao {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private BigDecimal valor;
@Enumerated(EnumType.STRING)
private TipoMovimentacao tipo;
@Temporal(TemporalType.TIMESTAMP)
private Calendar data;
private String descricao;
@ManyToMany
private List<Categoria> categoria;
//Muitas movimentações para uma conta => @ManyToOne
@ManyToOne
private Conta conta;
public Integer getId() {
return id;
}
//...
@Entity
public class Categoria {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private String nome;
@Deprecated // pesquisar essa anotation
public Categoria() {
}
public Categoria(String nome) {
this.nome = nome;
}
public Integer getId() {
return id;
}
//...
@Entity
public class Conta {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private String titular;
private String numero;
private String banco;
private String agencia;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
//...
public class TesteMovimentacoesComCategoria {
public static void main(String[]args) {
Categoria categoria1 = new Categoria("Viagem");
Categoria categoria2 = new Categoria("Negocios");
Conta conta = new Conta();
conta.setId(1);
Movimentacao movimentacao1 = new Movimentacao();
movimentacao1.setData(Calendar.getInstance());
movimentacao1.setDescricao("Viagem à SP");
movimentacao1.setTipo(TipoMovimentacao.SAIDA);
movimentacao1.setValor(new BigDecimal("100.0"));
movimentacao1.setCategoria(Arrays.asList(categoria1, categoria2)); //pesquisar!!!!
movimentacao1.setConta(conta);
Movimentacao movimentacao2 = new Movimentacao();
movimentacao2.setData(Calendar.getInstance());
movimentacao2.setDescricao("Viagem à RJ");
movimentacao2.setTipo(TipoMovimentacao.SAIDA);
movimentacao2.setValor(new BigDecimal("300.0"));
movimentacao2.setCategoria(Arrays.asList(categoria1, categoria2)); //pesquisar!!!!!
movimentacao2.setConta(conta);
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
em.persist(categoria1);
em.persist(categoria2);
em.persist(movimentacao1);
em.persist(movimentacao2);
em.getTransaction().commit();
em.close();
}
}