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
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ç!