Datatable: mostrar o registro só do usuário logado

Boa noite pessoal! vou mostrar o que quero e como estou tentando fazer.

Ex.: entrei no sistema e quero ver somente o meu registro, pra que eu possa atualizar meus dados. Eu ja tenho um datatable que traz todos registros de usuarios, mas ai qualquer um pode editar o registro de outro usuario, ai nao rola

xhtml que mostra a lista de todos usuarios no meu datatable

<!-- Formulário: tabela Users -->
                            <h:form id="frmUsers">
                                <p:dataTable id="datatable" var="usuario" value="#{usuarioBean.usuarios}" emptyMessage="No users found."
                                             paginator="true" rows="10" paginatorPosition="bottom" rowKey="#{usuario.id}" selectionMode="single"
                                             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                                             rowsPerPageTemplate="5,10,15">
                                    <f:facet name="header">  
                                        Search users  
                                    </f:facet>
                                    <p:column headerText="Name" >
                                        <h:outputText value="#{usuario.name}" />
                                    </p:column>
                                        
                                    <p:column headerText="Username" >
                                        <h:outputText value="#{usuario.username}" />
                                    </p:column>
                                        
                                    <p:column headerText="Authority">
                                        <h:outputText value="#{usuario.authority}" />
                                    </p:column>
                                        
                                    <p:column style="width:11%; text-align: center" >  
                                        <p:commandButton update=":frmUsers" oncomplete="carDialog.show()" image="icon-view" title="View"/>
                                        <p:commandButton update=":frmEdit:pgEdit" actionListener="#{usuarioBean.prepararAtualizar(usuario.id)}" 
                                                         oncomplete="dlgEdit.show()" image="icon-edit" title="Edit"/> 
                                        <p:commandButton update=":frmDelete" actionListener="#{usuarioBean.prepararAtualizar(usuario.id)}" oncomplete="dlgDelete.show()" image="icon-delete" title="Delete"/>                 
                                    </p:column>
                                </p:dataTable>                 
                                    
                            </h:form>
                                

                            <!-- Formulário: editar User -->
                           <h:form id="frmEdit">
                                <p:dialog header="Edit" widgetVar="dlgEdit" resizable="false" id="dlgEdit"  modal="true"> 
                                    <p:growl id="growlEdit" showDetail="true" sticky="true"/>
                                    <h:panelGrid id="pgEdit" columns="2" cellpadding="4" style="margin:0 auto;">  
                                        
                                        <h:outputText value="Name:" />                  
                                        <p:inputText value="#{usuarioBean.usuario.name}" style="width: 200px"/>
                                            
                                        <h:outputText value="Username:" />
                                        <h:outputText value="Authority:" /> 
                                        <p:inputText value="#{usuarioBean.usuario.username}" style="width: 200px"/>
                                        <p:selectOneMenu value="#{usuarioBean.usuario.authority}" style="width: 200px">  
                                            <f:selectItem itemLabel="-- select --" itemValue="" />
                                            <f:selectItem itemLabel="USER" itemValue="ROLE_USER" /> 
                                            <f:selectItem itemLabel="ADMIN" itemValue="ROLE_ADMIN" />
                                        </p:selectOneMenu>     
                                            
                                    </h:panelGrid> 
                                        
                                    <p:separator/>
                                    <p:commandButton value="&nbsp;Edit" update=":frmUsers:datatable, growlEdit, dlgEdit" 
                                                     actionListener="#{usuarioBean.atualizar()}" oncomplete="dlgEdit.hide()" image="icon-save"/>
                                    <p:commandButton value="&nbsp;Cancel" update=":frmUsers:datatable" oncomplete="dlgEdit.hide()" image="icon-cancel"/> 
                                </p:dialog>  
                            </h:form> 

UsuarioBean

@ManagedBean(name="usuarioBean")
@SessionScoped
public class UsuarioBean implements Serializable {
 
    private Usuario usuario;
    private List<Usuario> usuarios;
 
    public UsuarioBean() {
        usuario = new Usuario();
        SecurityContext context = SecurityContextHolder.getContext();
        if (context instanceof SecurityContext){
            Authentication authentication = context.getAuthentication();
            if (authentication instanceof Authentication){
                usuario.setUsername(((User)authentication.getPrincipal()).getUsername());
            }
        }
    }
 
    public Usuario getUsuario() {
        //return usuario;
        if (usuario == null){
            usuario = new Usuario();
        }
        return usuario;
    }
 
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
    
    public void prepararInserir(){
        usuario = new Usuario();
    }
    
    public void prepararAtualizar(Integer id){
        UsuarioDao usuarioDao = new UsuarioDaoImpl();
        usuario = usuarioDao.buscarPorId(id);
    }
    
    public void inserir(){
        UsuarioDao usuarioDao = new UsuarioDaoImpl();
        usuarioDao.inserir(usuario);
        FacesContext context = FacesContext.getCurrentInstance();         
        context.addMessage(null, new FacesMessage("User successfully added."));
        usuario = new Usuario();
    }
    
    public void atualizar(){
        UsuarioDao usuarioDao = new UsuarioDaoImpl();
        usuarioDao.atualizar(usuario);
        FacesContext context = FacesContext.getCurrentInstance();         
        context.addMessage(null, new FacesMessage("User successfully updated."));
        usuario = new Usuario();
    }
    
    public void excluir(){
        UsuarioDao usuarioDao = new UsuarioDaoImpl();
        usuarioDao.excluir(usuario);
        FacesContext context = FacesContext.getCurrentInstance();         
        context.addMessage(null, new FacesMessage("User successfully deleted."));
        usuario = new Usuario();
    }
    
    public List<Usuario> getUsuarios() {
        UsuarioDao usuarioDao = new UsuarioDaoImpl();
        usuarios = usuarioDao.buscarTodos();
        return usuarios;
    }
    
    private List<Usuario> filteredUsuario;
    
    public List<Usuario> getFilteredUsuario() {  
        return filteredUsuario;  
    }  
  
    public void setFilteredUsuario(List<Usuario> filteredUsuario) {  
        this.filteredUsuario = filteredUsuario;  
    } 
       
}

se eu alterar a datatable traz o meu usuario, mas somente o username é preenchido e o resto fica em branco. Como faço pra mostrar o restante das informacoes?

h:form id="frmUsers">
                                <p:dataTable id="datatable" var="usuario" value="#{usuarioBean.usuario.username}" >
                                    <f:facet name="header">  
                                        Search users  
                                    </f:facet>
                                    <p:column headerText="Name" >
                                        <h:outputText value="#{usuarioBean.usuario.name}" />
                                    </p:column>
                                        
                                    <p:column headerText="Username" >
                                        <h:outputText value="#{usuarioBean.usuario.username}" />
                                    </p:column>
                                        
                                    <p:column headerText="Authority: ">
                                        <h:outputText value="#{usuarioBean.usuario.authority}" />
                                    </p:column>

rafa120,

Porque você não limita o retorno dos dados do banco?
Ao meu ver, você pode passar um parâmetro para a sua consulta e ela retornará os dados prontos pro teu datatable.
Algo assim:

[code]public List getUsuarios() {
UsuarioDao usuarioDao = new UsuarioDaoImpl();

    //aqui você passa um parâmetro para a consulta
    usuarios = usuarioDao.buscarUsuarios(usuario);  
    return usuarios;  

} [/code]

Eu fiz da seguinte maneira, mas ainda não sei como proceder.
Eu sei que se eu colocar no sql assim:
return session.createQuery(“from Usuario WHERE name=‘joao’”).list();

vai retornar só joao e nao é oq quero

UsuarioBean

public List<Usuario> getUsuarioDef() {    
        UsuarioDao usuarioDao = new UsuarioDaoImpl();    
          
        
        //aqui você passa um parâmetro para a consulta  
        usuarios = usuarioDao.buscarUserDef(usuario);   
        return usuarios;    
    }  

UsuarioDaoImpl

@Override
    public List<Usuario> buscarUserDef(Usuario usuario) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        return session.createQuery("from Usuario").list();
    }