Org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class

3 respostas
D

O problema é o seguinte eu tenho duas classes "BaixaEstoque" e "BaixaItem" essa classe BaixaItem é na verdade os itens do BaixaEstoque e nesse "BaixaItem" tem um atributo chamado produto, que na verdade é uma chave estrangeira para a tabela de Produto só que ele está me dando o seguinte erro:

Exception in thread "main" java.lang.ExceptionInInitializerError
	at br.com.lirios.repositorio.HibernateUtil.<clinit>(HibernateUtil.java:27)
	at br.com.lirios.repositorio.Repositorio.procurarProdutos(Repositorio.java:90)
	at br.com.lirios.ambiente_teste.Teste.main(Teste.java:17)
Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: br.com.lirios.entidades.Produto.baixaItemList[br.com.lirios.entidades.BaixaItem]
	at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1068)
	at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:600)
	at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:541)
	at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:324)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
	at br.com.lirios.repositorio.HibernateUtil.<clinit>(HibernateUtil.java:23)
	... 2 more
Java Result: 1
Minha classe BaixaItem
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Douglas
 */
@Entity
@Table(name = "baixa_item")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "BaixaItem.findAll", query = "SELECT b FROM BaixaItem b"),
    @NamedQuery(name = "BaixaItem.findByCodigo", query = "SELECT b FROM BaixaItem b WHERE b.codigo = :codigo"),
    @NamedQuery(name = "BaixaItem.findByQuantidade", query = "SELECT b FROM BaixaItem b WHERE b.quantidade = :quantidade")})
public class BaixaItem extends EntidadeBasica {
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "quantidade")
    private Double quantidade;
    @JoinColumn(name = "quarto", referencedColumnName = "codigo")
    @ManyToOne
    private Quarto quarto;
    @JoinColumn(name = "produto", referencedColumnName = "codigo")
    @ManyToOne
    private Produto produto;
    @JoinColumn(name = "baixa", referencedColumnName = "codigo")
    @ManyToOne
    private BaixaEstoque baixa;

Minha classe produto:

import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Douglas
 */
@Entity
@Table(name = "produto")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Produto.findAll", query = "SELECT p FROM Produto p"),
    @NamedQuery(name = "Produto.findByCodigo", query = "SELECT p FROM Produto p WHERE p.codigo = :codigo"),
    @NamedQuery(name = "Produto.findByDescricao", query = "SELECT p FROM Produto p WHERE p.descricao = :descricao"),
    @NamedQuery(name = "Produto.findByPreco1", query = "SELECT p FROM Produto p WHERE p.preco1 = :preco1"),
    @NamedQuery(name = "Produto.findByPreco2", query = "SELECT p FROM Produto p WHERE p.preco2 = :preco2"),
    @NamedQuery(name = "Produto.findByQuantidadeMinima", query = "SELECT p FROM Produto p WHERE p.quantidadeMinima = :quantidadeMinima"),
    @NamedQuery(name = "Produto.findByAtivo", query = "SELECT p FROM Produto p WHERE p.ativo = :ativo"),
    @NamedQuery(name = "Produto.findByCodigoId", query = "SELECT p FROM Produto p WHERE p.codigoId = :codigoId")})
public class Produto extends EntidadeBasica {
    @Column(name = "descricao")
    private String descricao;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "preco_1")
    private Double preco1;
    @Column(name = "preco_2")
    private Double preco2;
    @Column(name = "quantidade_minima")
    private Double quantidadeMinima;
    @Column(name = "ativo")
    private Boolean ativo;
    @Column(name = "codigo_id")
    private String codigoId;
    @OneToMany(mappedBy = "produto")
    private List<VendaItem> vendaItemList;
    @OneToMany(mappedBy = "produto")
    private List<EntradaItem> entradaItemList;
    @OneToMany(mappedBy = "produtoBaixa")
    private List<Produto> produtoList;
    @JoinColumn(name = "produto_baixa", referencedColumnName = "codigo")
    @ManyToOne
    private Produto produtoBaixa;
    @JoinColumn(name = "grupo", referencedColumnName = "codigo")
    @ManyToOne
    private GrupoProduto grupo;
    @JoinColumn(name = "estoque", referencedColumnName = "codigo")
    @ManyToOne
    private Estoque estoque;
    @OneToMany(mappedBy = "produto")
    private List<EstoqueQuarto> estoqueQuartoList;
    @OneToMany(mappedBy = "produto")
    private List<BaixaItem> baixaItemList;

Minha classe EntidadeBaisca

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;

@MappedSuperclass
public abstract class EntidadeBasica {
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private int codigo;

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	public int getCodigo() {
		return codigo;
	}
}

Meu Hibernate.cfg

<mapping class="br.com.lirios.entidades.BaixaItem" />
        <mapping class="br.com.lirios.entidades.Entrada" />
        <mapping class="br.com.lirios.entidades.EntradaItem" />
        <mapping class="br.com.lirios.entidades.Estoque" />
        <mapping class="br.com.lirios.entidades.EstoqueQuarto" />
        <mapping class="br.com.lirios.entidades.GrupoProduto" />
        <mapping class="br.com.lirios.entidades.Jornada" />
        <mapping class="br.com.lirios.entidades.Log" />
        <mapping class="br.com.lirios.entidades.Quarto" />
        <mapping class="br.com.lirios.entidades.BaixaEstoque" />
        <mapping class="br.com.lirios.entidades.Usuario" />
        <mapping class="br.com.lirios.entidades.Venda" />
        <mapping class="br.com.lirios.entidades.VendaItem" />
        <mapping class="br.com.lirios.entidades.Pagamento" />
        <mapping class="br.com.lirios.entidades.Produto" />

Dês de já agradeço!

Abç!

3 Respostas

D

E a HibernateUtil?

D

Ta ai! :wink:

vlw!

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;

/**
 * Hibernate Utility class with a convenient method to get Session Factory object.
 *
 * @author Douglas
 */
public class HibernateUtil {

    private static final SessionFactory sessionFactory;
    
    static {
        try {
            // Create the SessionFactory from standard (hibernate.cfg.xml) 
            // config file.
            sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Log the exception. 
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
    
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}
D

Ai galera aconteceram algumas coisas sem explicações aki no meu PC.
Tipo… deu esse erro com to o projeto configurado e depois do nada o meu NetBeans parou de reconhecer o hiberate.cfg.xml ai eu me arretei salvei meu projeto no HD externo e formatei o PC. Depois disso o meu projeto rodou perfeitamente.

Eu vou deixar ai como não resolvido pq pode ser que alguem possa explicar!

Mais de qualquer forma, muito obg a todo!

Boa PROGRAMADA AI PESSOAL!
Abç!

Criado 18 de setembro de 2011
Ultima resposta 18 de set. de 2011
Respostas 3
Participantes 2