Hibernate Herança Single Table - Nao consigo inserir os dados.

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
@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

Luis Eduardo

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar