JSF iniciante

Olá a todos!
Estou estudando JSF + JPA e Hibernate e tó apanhando um pouco! Estou tentando implementar um crud simples chamado usuario. A tela jsf tem um formulário simples e para cada inserção uma lista aparece abaixo com as opções de excluir e remover. Estou me baseando nas aulas do kurtphpr. Contudo, o meu usuário tem uma tipo de usuario, que pode ser admin, usuário normal, usuário médio, ect… Implementei um selectOneMenu com o seu Conversor. O problema é que para buscar da grid o meu usuário eu tenho um <h:inputHidden value="#{usuarioBean.usuario}"/> e por essa razão não consigo seguir adiante, pois devido a esse problema não é possível fazer a conversão.
Segue o usuario bean:

ManagedBean(name="usuarioBean")
@RequestScoped
public class UsuarioBean {
    private Usuario usuario = new Usuario();
	private List&lt;Usuario&gt; lista;
	private List&lt;SelectItem&gt; listaItens;
	private TipoUsuario tipoUsuario = new TipoUsuario();
    public void salvar(){
    	Session session = HibernateUtil.getSession().openSession();
    	session.getTransaction().begin();
    	usuario.setData_criacao(new Date());
    	if(usuario.getId() == 0){
	    	//System.out.println("finelamente  "+tipoUsuario.getTipo());
    		//TipoUsuario tp = (TipoUsuario) session.get(TipoUsuario.class, 7);
	    	//usuario.setTipoUsuario(tp);
	    	session.persist(usuario);   
	    	FacesMessage face = new FacesMessage("Usuário cadastrado com sucesso.");
	    	FacesContext contexto=FacesContext.getCurrentInstance();
	    	contexto.addMessage(null, face);
    	}else{
	    	session.update(usuario);
    	}
    	session.getTransaction().commit();
    	session.close();
    	lista=null;
    }
    
	
	@SuppressWarnings("unchecked")
	public List&lt;Usuario&gt; getTodosOsUsuarios(){
		if(lista == null){
			Session session = HibernateUtil.getSession().openSession();
	    	Criteria c = session.createCriteria(Usuario.class);
			lista = c.list();
		}
        return lista;
	}
	public void excluir(){
		Session session = HibernateUtil.getSession().openSession();
		session.getTransaction().begin();
		session.delete(this.usuario);
		session.getTransaction().commit();
		session.close();
		lista = null;
	}
	public void novo(){
		usuario= new Usuario();
	}
    public Usuario getUsuario() {
		return usuario;
	}
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	public static TipoUsuario buscarTipoUsuario(int id){
		Session session = HibernateUtil.getSession().openSession();
    	session.getTransaction().begin();
    	TipoUsuario tp = (TipoUsuario) session.get(TipoUsuario.class, id);
		return tp;
	}
	
     public List&lt;SelectItem&gt; buscarCategorias() {
		
		List&lt;TipoUsuario&gt; listaTipoUsuario= new ArrayList&lt;TipoUsuario&gt;();
		Session session = HibernateUtil.getSession().openSession();
    	Criteria c = session.createCriteria(TipoUsuario.class);
        listaTipoUsuario = c.list();
        listaItens = new ArrayList&lt;SelectItem&gt;(listaTipoUsuario.size());
    	for(TipoUsuario i:listaTipoUsuario){
    		listaItens.add(new SelectItem(i,i.getTipo()));
    	}
        return listaItens;
	}
	public TipoUsuario getTipoUsuario() {
		return tipoUsuario;
	}
	public void setTipoUsuario(TipoUsuario tipoUsuario) {
		this.tipoUsuario = tipoUsuario;
	}	
}
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"&gt;
&lt;f:loadBundle basename="resources.application" var="msg"/&gt;
&lt;ui:composition template="/templates/template.xhtml"&gt;
	&lt;ui:define name="pageTitle"&gt;#{msg.header}&lt;/ui:define&gt;
	&lt;ui:define name="pageHeader"&gt;Cadastro de Usuário&lt;/ui:define&gt;
	&lt;ui:define name="body"&gt;
		&lt;h:form id="edicao"&gt;
		&lt;h:messages/&gt;
		
		//Preciso do inputHidden para quando o usuario for editar 
		&lt;h:inputHidden value="#{usuarioBean.usuario}"/&gt;
	
				&lt;h:panelGrid columns="2"&gt;
				&lt;h:outputLabel value="Login"/&gt;
				&lt;h:inputText  value="#{usuarioBean.usuario.login}" required="true"  requiredMessage="Login é um Campo Obrigitário!"/&gt;
				&lt;h:outputLabel value="Senha"/&gt;
				&lt;h:inputSecret value="#{usuarioBean.usuario.senha}" required="true" requiredMessage="Senha é um Campo Obrigitário!"/&gt;				
				&lt;h:outputLabel value="Email"/&gt;
				&lt;h:inputText   value="#{usuarioBean.usuario.email}" required="true" requiredMessage="Email é um Campo Obrigitário!"&gt;
				     &lt;f:validator   validatorId="email"/&gt;
				&lt;/h:inputText&gt;
	 
				
             [size=18] [color=red]                   //NA PRIMEIRA VEZ NÃO TEM USUARIO E PORTANTO NEM UM TIPO DE USUARIO(QUE PODE SER ADMIN, ESPECIAL, NORMAL, ECT..), PORTANTO BUSCO DA BASE DE DADOS. O PROBLEMA É JUSTAMENTE QUANDO TENDO SALVAR OS DADOS. POIS O JSF NÃO CONSEGUE FAZER A CONVERSÃO.[/color][/size]
                                &lt;h:outputLabel  value="Defina o Tipo de Usuário:" /&gt;
				&lt;h:selectOneMenu value="#{usuarioBean.tipoUsuario}"&gt;
				&lt;f:selectItems value="#{usuarioBean.buscarCategorias()}"/&gt;   			     				
				&lt;/h:selectOneMenu&gt;
				 				
				&lt;/h:panelGrid&gt;
				&lt;h:commandButton action="#{usuarioBean.salvar()}" value="salvar" /&gt;
				&lt;h:commandButton action="#{usuarioBean.novo()}" value="novo usuário" /&gt;
				
		&lt;/h:form&gt;

	               &lt;h:form id="lista"&gt;
					&lt;h:dataTable value="#{usuarioBean.todosOsUsuarios}" var="usuario"  border='2' rendered="#{not empty usuarioBean.todosOsUsuarios}"&gt;
					&lt;f:facet name="header"&gt;Listagem de Usuários&lt;/f:facet&gt;
					&lt;h:column&gt;
					&lt;f:facet name="header"&gt;Login&lt;/f:facet&gt;
					#{usuario.login}
					&lt;/h:column&gt;
					&lt;h:column&gt;
					&lt;f:facet name="header"&gt;Email&lt;/f:facet&gt;
					#{usuario.email}
					&lt;/h:column&gt;
					&lt;h:column&gt;
					&lt;f:facet name="header"&gt;Tipo Usuário&lt;/f:facet&gt;
					#{usuario.tipoUsuario.tipo}
					&lt;/h:column&gt;
					
					&lt;h:column&gt;
					&lt;f:facet name="header"&gt;Data Criação&lt;/f:facet&gt;
					&lt;h:outputText value="#{usuario.data_criacao}"&gt;
					&lt;f:convertDateTime dateStyle="medium"/&gt;
					&lt;/h:outputText&gt;
					#{usuario.data_criacao}
					&lt;/h:column&gt;
					
					&lt;h:column&gt;
					&lt;f:facet name="header"&gt; Ações&lt;/f:facet&gt;
					&lt;h:commandLink value="" action="#{usuarioBean.excluir}" onclick="if (!confirm('Deseja realmente excluir o usuário  #{usuario.login}?'))return false;"&gt;
					&lt;h:graphicImage library="imagens"  name="remove-icon.png" /&gt;
					&lt;f:setPropertyActionListener target="#{usuarioBean.usuario}" value="#{usuario}" /&gt;
					&lt;/h:commandLink&gt;
					
					&lt;h:commandLink&gt;
					&lt;h:graphicImage library="imagens"  name="wrench-icon.png"/&gt;
				    &lt;f:setPropertyActionListener target="#{usuarioBean.usuario}" value="#{usuario}" /&gt;
					&lt;/h:commandLink&gt;
					&lt;/h:column&gt;
					&lt;/h:dataTable&gt;
					&lt;/h:form&gt;
	&lt;/ui:define&gt;
&lt;/ui:composition&gt;
&lt;/html&gt;