Selecao de dados por valores de uma entity

Pessoal… não sei se há um meio fácil de fazer isso, ou se já até existe pronto…

Ao inves de ficar fazendo em CADA DAO a selecao do dados assim

public List<Usuarios> select(String nome, int idade, String datanasc, etc..) throws PersistenceException { .. }
public List<Produtos> select(String produto, float peso, etc..) throws PersistenceException { .. }
bla bla

Fizesse assim: selecao por entities:

   //Preenche a entity
   Usuarios user = new Usuarios();
   user.setNome("Tony");

   //buscando usuarios com o nome "Tony"
   List<Usuarios> foundUsers = userDao.find(user);

   //E no metodo do UserDao
   public List<Usuarios> find(Usuario criterios) {
        //busca apenas os dados da entity que foram setados
        //.... ?????? EntityManager.???(criterios);
   }

sendo que este modo deveria funcionar para TODAS as entidades.

Eu acho que esse poderia ser um aspecto mais do EJB do que do desenvolvedor, ou seja, o EntityManager deveria conter algum metodo que fizesse este esforco. Pensando assim, deveria haver um modo do EntityManager saber qual campo vai ser pesquisado… pois null ainda é um valor valido para busca… (*ai complica).

Alguém sabe um modo semelhante ou mais simples de se fazer isso?

Valeu.