Fórum Hibernate Herança Single Table - Nao consigo inserir os dados. #552030
21/04/2016
0
Tenho uma classe chamada produto e desse produto tenho 3 subclasses que herdam atributos da classe produto, mas nao estou conseguindo mandar os dados e salvar no banco, estou procurando feito louco mas nao consigo encontrar o problema em lugar nenhum (ate entao tenho somente 1 subclasse pronta)
Essa e a classe Produto
Sub classe Livro que herda de Produto
Estou inserindo os dados atraves de um metodo de uma classe operaçoes (e ai onde nao sei se estou fazendo certo)
E so para confirmar estou mapeando as classes no hibernate.cfg.xml deste jeito:
Essa e a classe Produto
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "tipo_produto",discriminatorType = DiscriminatorType.STRING)
public class Produtos{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer codigo;
private String nome;
private String descricao;
private Integer estoque;
private String categoria;
private Double pvenda;
public void setNome(String nome) {
this.nome = nome;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public void setEstoque(Integer estoque) {
this.estoque = estoque;
}
public void setCategoria(String categoria) {
this.categoria = categoria;
}
public void setPvenda(Double pvenda) {
this.pvenda = pvenda;
}
}
Sub classe Livro que herda de Produto
@Entity
@DiscriminatorValue(value = "Livros")
public class Livros extends Produtos {
private Integer qtpaginas;
private String editora;
private String autor;
public void setQtpaginas(Integer qtpaginas) {
this.qtpaginas = qtpaginas;
}
public void setEditora(String editora) {
this.editora = editora;
}
public void setAutor(String autor) {
this.autor = autor;
}
}
Estou inserindo os dados atraves de um metodo de uma classe operaçoes (e ai onde nao sei se estou fazendo certo)
public class Operacoes {
Scanner input = new Scanner(System.in);
SessionFactory factory = new Configuration().configure().buildSessionFactory();
Session sessao = factory.openSession();
public void ProdutoCadast(int opcao){
switch (opcao){
case 3:
Livros livros = new Livros();
System.out.println("Digite o nomedo produto: ");
livros.setNome(input.nextLine());
System.out.println("Digite a editora: ");
livros.setEditora(input.nextLine());
System.out.println("Digite o autor: ");
livros.setAutor(input.nextLine());
System.out.println("Digite a descricao: ");
livros.setDescricao(input.nextLine());
System.out.println("Digite a categoria: ");
livros.setCategoria(input.nextLine());
System.out.println("Digite a quantidade de paginas: ");
livros.setQtpaginas(input.nextInt());
System.out.println("Digite a quantidade de estoque: ");
livros.setEstoque(input.nextInt());
System.out.println("Digite o preco de venda: ");
livros.setPvenda(input.nextDouble());
sessao.beginTransaction();
sessao.persist(livros);
break;
}
sessao.getTransaction().commit();
E so para confirmar estou mapeando as classes no hibernate.cfg.xml deste jeito:
<mapping class="Gerenciamento.loja.Clientes"/> <mapping class="Gerenciamento.loja.Produtos"/>
Luis Eduardo
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)