Hibernate - Gravação Coluna id (PK)

Ola Gente!!

Tenho o mapeamento no hibernate da classe categoria, a própria classe e a classe que faz a persistencia dela. Não consigo gravar no banco, o Netbeans me dá a mensagem

Hibernate: select categoria0_.Cod_Categoria as Cod1_0_, categoria0_.Descricao as Descricao0_ from categoria categoria0_ where categoria0_.Descricao=? limit ? Hibernate: select max(Cod_Categoria) from categoria

Estou colocando aqui o mapeamento xml da classe, a propria classe e a classe de persistencia:


Pessoal deculpem aí estão as classes:

mapeamento xml da classe

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	
	<class
		name="beans.Categoria"
		table="categoria">
		
		<id
		name="Cod_Categoria"
		column="Cod_Categoria"
		type="long">
		<generator class="increment"/>
		</id>
		
		<property
			name="Descricao"
			column="Descricao"
			type="string"/>
                      
         </class>
</hibernate-mapping>
/*
 * Categoria.java
 *
 * Created on 1 de Dezembro de 2006, 10:31
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package beans;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

/**
 *
 * @author ti_m08
 */
public class Categoria extends Object implements Serializable{
    
    private int Cod_Categoria;
    private String Descricao;
    private Set Produto = new HashSet();
    private Produto produto;
	
    public Categoria(int Cod_Categoria, String Descricao) {
        super();
        // TODO Auto-generated constructor stub
        this.Cod_Categoria = Cod_Categoria;
        this.Descricao = Descricao;
    }

    public Categoria() {
        super();
    }

    
    public int getCod_Categoria() {

        return Cod_Categoria;
    }

    public void setCod_Categoria(int Cod_Categoria) {
        
        this.Cod_Categoria = ++Cod_Categoria;
    }

    public String getDescricao() {
        return Descricao;
    }

    public void setDescricao(String Descricao) {
        this.Descricao = Descricao;
    }
}

Classe de persistencia

/*
 * CategoriaFacade.java
 *
 * Created on 6 de Dezembro de 2006, 15:00
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package beans;

import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import org.hibernate.Session;
import util.HibernateUtil;
/**
 *  @netbeans.hibernate.facade beanClass=beanslocadora.categoria
 */
public class CategoriaFacade { 
    private Categoria categoria;
    Session session;
    
    public void saveCategoria(Categoria categoria) {
        try{
         HibernateUtil.beginTransaction();
         Session session = HibernateUtil.currentSession();
         session.save(categoria);
         HibernateUtil.commitTransaction();
         addMessage("Categoria salva com sucesso.");
        }catch(Exception e1){ 
         addMessage("Erro ao cadastrar categoria!");
        }finally{HibernateUtil.closeSession();}
    } 
    
     
    public String criaCategoria(Categoria categoria){
      if (this.findByDescricao(categoria.getDescricao())==null)
      {this.saveCategoria(categoria);
         return "categoria_criada";
      }else  {
          addMessage("Categoria ja existente!");
          return "categoria_criate";
      }
    }
    
    public String criaCategoria(){
    if (this.findByDescricao(categoria.getDescricao())==null)
    {this.saveCategoria(this.getCategoria());
     return "categoria_criada";
    }else  {
          addMessage("Categoria ja existente!");
          return "categoria_create";
      }
    }

     public CategoriaFacade(){}

    public Categoria getCategoria() {
        return categoria;
    }

    public void setCategoria(Categoria categoria) {
        this.categoria = categoria;
    }
    
  public String createSetup() {
        this.setCategoria(new Categoria());
        return "categoria_create";
    }
  
  public Categoria findByDescricao(String descricao) {
      try{
            Session session = HibernateUtil.currentSession();  

        String query1 ="from Categoria c where c.Descricao = :descricao";
        org.hibernate.Query query = session.createQuery(query1).setString("descricao", descricao).setMaxResults(1);
        Categoria categoria =(Categoria) query.uniqueResult();
         return categoria;
      }catch(Exception e){ addMessage("Erro ao localizar categoria!");
                           return null;
                          } 
    }

   public List getCategorias() {
       try{
          HibernateUtil.beginTransaction();
          Session session = HibernateUtil.currentSession();
          org.hibernate.Query query = session.createQuery(
          "select object(o) from Categoria as o");
          List list= query.list(); 
          HibernateUtil.commitTransaction();
          HibernateUtil.closeSession();
          return list;
         
       }catch(Exception e1){ 
              addMessage("Erro em listar categorias!"); 
              return null;
            }    
   }
  
   public String destroy() {
      try{
            HibernateUtil.beginTransaction();
            Session session = HibernateUtil.currentSession();
            Categoria categoria = getCategoriaFromRequestParam();
            session.delete(categoria);
            HibernateUtil.commitTransaction();
            addMessage("Categoria removida com sucesso.");            
        } catch (Exception ex) {
                addMessage("Erro ao remover categoria!");
          } finally{HibernateUtil.closeSession();}
        return "categoria_list"; 
    }

    public Categoria getCategoriaFromRequestParam() {
        ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
        HttpServletRequest request = (HttpServletRequest)ec.getRequest();
        String param = request.getParameter("descricao");
        System.out.println("categoria em getCategriaFromRqParam="+param);
        return this.findByDescricao(param);  
        
    }

   public static void addMessage(String msg) {
        FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg);
        FacesContext fc = FacesContext.getCurrentInstance();
        fc.addMessage(null, facesMsg);
    } 
   
   
   public String editSetup() {
        setCategoriaFromRequestParam();
        return "categoria_edit";
    }
public void setCategoriaFromRequestParam() {
        Categoria categoria = getCategoriaFromRequestParam();
        if(categoria==null) System.out.println("categoria nula");
        setCategoria(categoria);
    }

   
    public String edit() {
        try{
             HibernateUtil.beginTransaction();
             Session session = HibernateUtil.currentSession();
             session.merge(categoria);
             HibernateUtil.commitTransaction();
             addMessage("Categoria foi atualizada com sucesso.");
        } catch (Exception ex) {
            try {
                 addMessage("Erro ao atualizar categoria!");
            } catch (Exception e) {System.out.println("erro em edit categoria");}
        }finally{ HibernateUtil.closeSession(); }
        return "categoria_list"; 
    }
    
    
}