[RESOLVIDO]Erro de hibernate Could not determine type for:

2 respostas
S

Sou iniciante em hibernate e apanhando para mapear algumas classes, esse erro está aparecendo :

SEVERE: Servlet.service() for servlet LoginServlet threw exception
org.hibernate.MappingException: Could not determine type for: model.Item_Pedido, at table: Produto, for columns: [org.hibernate.mapping.Column(itens_pedido)]
	at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:292)
	at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:276)
	at org.hibernate.mapping.Property.isValid(Property.java:207)
	at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:458)
	at org.hibernate.mapping.RootClass.validate(RootClass.java:215)
	at org.hibernate.cfg.Configuration.validate(Configuration.java:1135)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1320)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
	at util.HibernateUtil.<clinit>(HibernateUtil.java:21)
	at business.LoginDAO.get(LoginDAO.java:32)

Vou postar as classes mapeadas e o script do BD dessas duas tabelas pq realmente nem sei como explicar esse erro pq n saco nada de Hibernate. Mais uma informação se for útil , nenhuma anotação está em getters ou setters

Essa é a classe Item_Pedido:
@Entity
@Table(name = "Item_Pedido")
@SequenceGenerator(name="seq_item_pedido",sequenceName="seq_item_pedido")
public class Item_Pedido {
	@Id
	@GeneratedValue(generator="seq_item_pedido",strategy = GenerationType.AUTO)
	@Column(name="idItem_Pedido")
	private int idItem_Pedido;
	
	private String nome_produto;
	private String tipo_produto;
	private String modelo;
	private int quantidade;
	
	//relacionamentos
	
	@ManyToOne(fetch = FetchType.EAGER) 
	@JoinColumn(name="Pedido_Compra_numero_pedido", referencedColumnName="numero_pedido",insertable=true, updatable=true) 
	@Fetch(FetchMode.JOIN) 
	@Cascade(CascadeType.SAVE_UPDATE)
	private Pedido_Compra pedido;
	
	@OneToMany(mappedBy="itens_pedido", fetch = FetchType.LAZY)
	@Cascade(CascadeType.ALL)
	private Collection <Produto> produtos;

        //Método construtor, getters e setters
Classe Produto:
@Entity
@Table(name = "Produto")
@SequenceGenerator(name="seq_produto",sequenceName="seq_produto")
public class Produto {
	
	@Id
	@GeneratedValue(generator="seq_produto",strategy = GenerationType.AUTO)
	private String codigo_produto;
	private String  nome;
	private double valor_compra;
	private double valor_venda;
	private String  tipo;
	private int quantidade_atual;
	private int quantidade_minima;
	private String  lote;
	
	//Relacionamentos
	
	@ManyToOne(fetch = FetchType.EAGER)  
	@JoinColumn(name="cnpj")
	private Fornecedor fornecedor;
	
	private Item_Venda itens_venda;
	
	private Item_Pedido itens_pedido;

          //Método construtor, getters e setters
e esse são os scripts de BD dessas tabelas.
CREATE TABLE Produto (
  codigo_produto VARCHAR(10) NOT NULL,
  Fornecedor_cnpj VARCHAR(14) NOT NULL,
  nome VARCHAR(45) NOT NULL,
  valor_compra FLOAT NOT NULL,
  valor_venda FLOAT NOT NULL,
  tipo VARCHAR(45) NOT NULL,
  quantidade_atual INTEGER NOT NULL,
  quantidade_minima INTEGER NOT NULL,
  lote INTEGER NOT NULL,
  PRIMARY KEY(codigo_produto),
  FOREIGN KEY(Fornecedor_cnpj)
    REFERENCES Fornecedor(cnpj)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);


CREATE TABLE Item_Pedido (
  idItem_Pedido INTEGER NOT NULL,
  Produto_codigo_produto VARCHAR(10) NOT NULL,
  Pedido_Compra_numero_pedido VARCHAR(20) NOT NULL,
  nome_produto VARCHAR(20) NOT NULL,
  tipo_produto VARCHAR(45) NOT NULL,
  modelo VARCHAR(20) NOT NULL,
  quantidade INTEGER NOT NULL,
  PRIMARY KEY(idItem_Pedido),
  FOREIGN KEY(Pedido_Compra_numero_pedido)
    REFERENCES Pedido_Compra(numero_pedido)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
  FOREIGN KEY(Produto_codigo_produto)
    REFERENCES Produto(codigo_produto)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

Fiquei com a dúvida se não posso ter um método getItens_pedido() se não houver um associação Item_Pedido?
Se algum puder me ajudar, agradeço

2 Respostas

S

Coloquei @Transient nos dois atributos e agora mostra o erro

mappedBy reference an unknown target entity property: model.Produto.itens_pedido in model.Item_Pedido.produtos

S

Consegui resolver

na classe produto coloquei as anotações sem nenhum atributo:
@ManyToOne
	private Item_Venda itens_venda;
	
	
	@ManyToOne
	private Item_Pedido itens_pedido;
Criado 9 de novembro de 2010
Ultima resposta 9 de nov. de 2010
Respostas 2
Participantes 1