Boa tarde pessoal, estou estudando JPA/hibernate e consegui tirar varias dúvidas pesquisando pelo fórum, porém empaquei em uma questão e não achei nenhuma solução até agora.
É o seguinte, estou acompanhando um tutorial do Hebert Coelho(JPA-Mini-livro) e estou tentando implementar um relacionamento ManyToMany com campos adicionais, onde tenho as tabelas: categoria; tamanho; categoriaTamanho e na tabela categoriaTamanho tenho um atributo “preco” (preço).
Até ai tudo bem, porém eu estou tentando alterar uma categoria, adicionando uma lista de “categoriaTamanho” (que por enquanto estou testando com somente 1 objeto). Só que a tabela categoriaTamanho não é atualizada durante o processo.
Alguem saberia me dizer o que estou fazendo de errado?
Segue abaixo o código:
Categoria:
@Entity
@Table(name = "categoria")
public class Categoria implements Serializable {
/**
*
*/
private static final long serialVersionUID = 4860749609685809786L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String nome;
private int calzone;
private int status;
@OneToMany(mappedBy = "categoria")
private List<ProdutoVariavel> produtosVariaveis;
@OneToMany(mappedBy = "categoria")
private List<CategoriaTamanho> tamanhos;
//getters and setters e etc...
Tamanho:
@Entity
@Table(name = "tamanho_pizza")
public class Tamanho implements Serializable{
/**
*
*/
private static final long serialVersionUID = -323623018617588835L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String nome;
private int pedacos;
@Column(name="qtd_sabores")
private int quantidadeSabores;
private int status;
@OneToMany(mappedBy = "tamanho")
private List<CategoriaTamanho> categorias;
//getters and setters e etc...
CategoriaTamanho
@Entity
@IdClass(CategoriaTamanhoID.class)
@Table(name = "categoriaTamanho")
public class CategoriaTamanho implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1145594767666232939L;
@Id
@ManyToOne
@JoinColumn(name="id_categoria")
private Categoria categoria;
@Id
@ManyToOne
@JoinColumn(name="id_tamanho")
private Tamanho tamanho;
@Column(name="preco_pizza")
private double precoPizza;
//getters and setters e etc...
CategoriaTamanhoID
public class CategoriaTamanhoID implements Serializable{
/**
*
*/
private static final long serialVersionUID = -6886310238389615698L;
private int tamanho;
private int categoria;
public CategoriaTamanhoID(){
}
//getters and setters e etc...
Pequeno método que estou usando para testar:
public String DefinirPreco(int categoriaID){
tamanho = tamanhoDAO.pesquisar(1);
categoria = categoriaDAO.pesquisar(categoriaID);
categoriaTamanho.setTamanho(tamanho);
categoriaTamanho.setCategoria(categoria);
categoriaTamanho.setPrecoPizza(20.30);
tamanhos.add(categoriaTamanho);
categoria.setTamanhos(tamanhos);
categoriaDAO.atualizar(categoria);
return "sucesso";
}
