Metodo generico para o meu dao generico

Pessoal,

Estou fazendo um Dao Generico com JPA!! e queria fazer um método tipo esse :

        public  List<Machine> findByName(String nome) {
                String query = "SELECT m FROM Machine m WHERE m.nome like :nome";
                Map<String, Object> params = new HashMap<String, Object>();
                params.put("nome", nome);
        return (List<Machine>) this.listAllByParam(query, params);
        }

Só que ao invez de receber o paramentro nome ele recebe um objeto, e ai dentro do metodo ele verifica os valores que estão diferente de null e faz a busca usando esses critérios.

Alguém tem alguma ideia ???

Obrigado,

Marcelo Gomes

Ao invez de passar a String como parametro, passe o objeto Machine.

public List<Machine> findByName(Machine mc) { String query = "SELECT m FROM Machine m WHERE m.nome like mc.nome"; Map<String, Object> params = new HashMap<String, Object>(); params.put("nome", nome); return (List<Machine>) this.listAllByParam(query, params); }

[ ]s,

Você está procurando isso?

[code]…
Product product = new Product();

product.setCategory(Category.APPAREL);
product.setName(“slacks”);

Example productExample =
Example.create(product).ignoreCase().enableLike();

List results = session.createCriteria(Product.class)
.add(productExample)
.list();
…[/code]

fonte: http://solutionsfit.com/blog/2007/12/04/extending-query-by-example-through-annotation/

O que quero fazer é isso que o maschiojv disse :smiley:

Mas desta forma só funciona com o hibernate, será que tem alguma forma de fazer que fique independente da tecnologia, que vai funcionar tanto em hibernate como em toplink ?

Obrigado,

Marcelo Gomes

[quote=marcelogomesrp]O que quero fazer é isso que o maschiojv disse :smiley:

Mas desta forma só funciona com o hibernate, será que tem alguma forma de fazer que fique independente da tecnologia, que vai funcionar tanto em hibernate como em toplink ?

Obrigado,

Marcelo Gomes[/quote]

Não, o JPA não suporta isso, ou vc faz a implementação do toplink ou do hibernate. :frowning:

Vou optar por um então :cry:

Obrigado pelas dicas

Marcelo Gomes