Metodo de consulta especifico (Hibernate)

Boa noite pessoal, gostaria de saber como crio um metodo do hibernate para consultar um objeto especifico do banco de dados, por exemplo…

gostaria de passar o parametro cd_usuario no metodo e ele me retornar somente o codigo, nome, login, cpf e email do usuario especifico…

eu tenho uma classe abstrata com o metodo findAll…mas agora queria um metodo especifico, essa é minha classe:

package services;

import java.lang.reflect.ParameterizedType;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.flex.remoting.RemotingInclude;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.SessionFactoryUtils;

public class AbstractService<T> {

	protected Class<T> classVO = null;
	public HibernateTemplate template;
   
	
	public AbstractService()
	{
		this.classVO = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
	}

	@Autowired
	public void setSessionFactory(SessionFactory sessionFactory)
	{
		template = new HibernateTemplate(sessionFactory);
	}

	@RemotingInclude
	public void add(T t) throws Exception
	{
		this.template.save(t);
	}

	@RemotingInclude
	public void update(T t)
	{
		this.template.update(t);
	}

	@RemotingInclude
	public void del(T t)
	{
		this.template.delete(t);
	}

	@RemotingInclude
	public  List<T> findAll()
	{
		return template.find(String.format("from %s", this.classVO.getName()));
	}
	
	
	@RemotingInclude
	public List<T> findByExample(T t)
	{
		return this.template.findByExample(t);
	}

}

e essa é minha classe CadUsuario

[code]package services;

import java.util.List;

import org.springframework.flex.remoting.RemotingDestination;
import org.springframework.flex.remoting.RemotingInclude;
import org.springframework.stereotype.Service;

import valueObjects.CadUsuarioVO;

@Service(“CadUsuarioService”)
@RemotingDestination(channels={“my-amf”})
public class CadUsuario extends AbstractService {

@RemotingInclude
public CadUsuarioVO login(CadUsuarioVO t)
{
	List<CadUsuarioVO> usuarios = this.findByExample(t);

	if (usuarios.size()==1)
		return usuarios.get(0);

	return null;

}

@RemotingInclude
@Override
public void add(CadUsuarioVO t) throws Exception
{
		//Verifica se o usuário já existe através do email
	CadUsuarioVO verificaUsuario = new CadUsuarioVO();
	verificaUsuario.setDs_login(t.getDs_login());
	
	List<CadUsuarioVO> usuarios = this.findByExample(verificaUsuario);
	
	if (usuarios.size()==0)
	{
		super.add(t);
	}
	else
	{
		throw new Exception("Login já cadastrado para outro usuário!");
	}
		
	
}

}
[/code]

Como posso criar esse método ?

Dá uma olhada no método do HibernateTemplate chamado findByNamedParam.

Aqui tem os detalhes:

http://docs.spring.io/spring/docs/2.5.x/api/org/springframework/orm/hibernate3/HibernateTemplate.html

fiz o metodo assim:

@RemotingInclude public List<T> findByGeneric(String query) { return this.template.findByExample(query); }

será que está certo ?

pois estou tentando comunicar com o flex